数据合并
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(