2021-03-05 pandas(合并_分组聚合_复合索引)

本文详细介绍了Pandas中的数据合并方法,包括join、Merge和concat,以及分组聚合操作。讲解了如何根据不同的连接键进行数据合并,并讨论了内连接、外连接、左连接和右连接的差异。此外,还提到了DataFrame的复合索引及其操作,如set_index和swaplevel。最后,文中给出了实际操作示例,如统计电影类型数据和星巴克店铺数量。
摘要由CSDN通过智能技术生成

数据合并

join

  • 默认情况下他是把行索引相同的数据合并到一起,以调用对象的行为准
  • 调用对象不存在的行数不合并,调用对象存在但合并对象无数据的索引位置出现NaN
In [1]: import pandas as pd                                                     
In [2]: import numpy as np                                                      
In [3]: d1 = pd.DataFrame(np.ones((2,4)),index=['A','B'],columns=list('abcd'))  
In [4]: d1                                                                      
Out[4]: 
     a    b    c    d
A  1.0  1.0  1.0  1.0
B  1.0  1.0  1.0  1.0

In [6]: d2 = pd.DataFrame(np.zeros((3,3)),index=['A','B','C'],columns=list('xyz'))                          

In [7]: d2                                                                                                  
Out[7]: 
     x    y    z
A  0.0  0.0  0.0
B  0.0  0.0  0.0
C  0.0  0.0  0.0

In [8]: d1.join(d2)                                                                                         
Out[8]: 
     a    b    c    d    x    y    z
A  1.0  1.0  1.0  1.0  0.0  0.0  0.0
B  1.0  1.0  1.0  1.0  0.0  0.0  0.0

In [9]: d2.join(d1)                                                                                         
Out[9]: 
     x    y    z    a    b    c    d
A  0.0  0.0  0.0  1.0  1.0  1.0  1.0
B  0.0  0.0  0.0  1.0  1.0  1.0  1.0
C  0.0  0.0  0.0  NaN  NaN  NaN  NaN

Merge

本节内容引用自CSDN博主「Catherine_In_Data」
————————————————
版权声明:本文为CSDN博主「Catherine_In_Data」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouwenyuan1015/article/details/77334889

  • 合并数据集,默认是两个数据集相同的字段(交集)
In [1]: import pandas as pd                                                                         
In [2]: import numpy as np                                                                          
In [3]: a1 = pd.DataFrame({
   'name':['max','kate','candy','sour'],'age':[20,21,22,23]})               

In [4]: a2 = pd.DataFrame({
   'name':['max','candy','tom'],'score':[100,99,98]}) 

In [17]: a3 = pd.DataFrame({
   'call_name':['max','kate','tom'],'age':[20,22,24]})                      

In [5]: a1                                                                                          
Out[5]: 
   name  age
0    max   20
1   kate   21
2  candy   22
3   sour   23

In [6]: a2                                                                                          
Out[6]: 
   name  score
0    max    100
1  candy     99
2    tom     98

In [7]: pd.merge(a1,a2)                                                                             
Out[7]: 
   name  age  score
0    max   20    100
1  candy   22     99
  • ’on=’用于连接的列名,必须同时存在于2个DataFrame对象中,如果未指定,则以left和right列名的交集作为连接键
    • 当左右侧字段不相同时,使用左右侧连接符,合并后再删除重复字段
    • left_on 左侧DataFrame 列连接键
    • right_on 右侧DataFrame 列连接键
    • Drop(‘删除字段’,axis=选择行列0/1)
    • left_index 左侧 行索引连接键
    • right_index 右侧 行索引连接键
In [8]: pd.merge(a1,a2,on='name')                                                                   
Out[8]: 
    name  age  score
0    max   20    100
1  candy   22     99
pd.merge(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值