利用pandas实现SQL中的操作

本文介绍了如何利用pandas库来实现SQL中的连接和分组操作。通过示例展示了如何进行外连接,并探讨了在dataframe上的分组方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接

设a1,a2为两个dataframe,二者中存在相同的键值,两个对象连接的方式有下面几种:

(1)内连接,pd.merge(a1, a2, on='key')
(2)左连接,pd.merge(a1, a2, on='key', how='left')
(3)右连接,pd.merge(a1, a2, on='key', how='right')

(4)外连接, pd.merge(a1, a2, on='key', how='outer')

In [7]: a=pd.DataFrame({"a":[3,2,4],'b':[1,3,5],'c':[9,3,1]})

In [8]: a
Out[8]:
   a  b  c
0  3  1  9
1  2  3  3
2  4  5  1

In [9]: b=pd.DataFrame({"c":[1,3,2],"d":[6,4,1]})

In [10]: b
Out[10]:
   c  d
0  1  6
1  3  4
2  2  1

In [12]: pd.merge(a,b,on="c")#内连接
Out[12]:
   a  b  c  d
0  2  3  3  4
1  4  5  1  6

In [13]: pd.merge(a,b,on="c",how="left")#左外连接
Out[13]:
   a  b  c    d
0  3  1  9  NaN
1  2  3  3  4.0
2  4  5  1  6.0

In [14]: pd.merge(a,b,on="c",how="right")#右外连接
Out[14]:
     a    b  c  d
0  2.0  3.0  3  4
1  4.0  5.0  1  6
2  NaN  NaN  2  1

In [15]: pd.merge(a,b,on="c",how="outer")#外连接
Out[15]:
     a    b  c    d
0  3.0  1.0  9  NaN
1  2.0  3.0  3  4.0
2  4.0  5.0  1  6.0
3  NaN  NaN  2  1.0
分组
In [16]: d=pd.DataFrame({"a":['a','c','b','a'],"b":[1,2,1,2]})

In [17]: d
Out[17]:
   a  b
0  a  1
1  c  2
2  b  1
3  a  2

In [18]: d.groupby('a')#可以传入一个列表的参数(by),还可以设置参数axis
Out[18]: <pandas.core.groupby.DataFrameGroupBy object at 0x000001F4EE49FD68>

In [19]: d.groupby('a').size()
Out[19]:
a
a    2
b    1
c    1
dtype: int64

In [20]: for name,group in d.groupby('a'):
    ...:     print("name:",name)
    ...:     print(group)
    ...:
name: a
   a  b
0  a  1
3  a  2
name: b
   a  b
2  b  1
name: c
   a  b
1  c  2

In [21]: d.groupby('a').sum()
Out[21]:
   b
a
a  3
b  1
c  2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值