DataFrame 合并
from pandas import DataFrame, Series
import pandas as pd
df1 = DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
'data1': range(7)
})
df2 = DataFrame({'key': ['a', 'b', 'd'], 'data2': range(3)})
print(df1)
# data1 key
# 0 0 b
# 1 1 b
# 2 2 a
# 3 3 c
# 4 4 a
# 5 5 a
# 6 6 b
print("========")
print(df2)
# data2 key
# 0 0 a
# 1 1 b
# 2 2 d
print("============")
f3 = pd.merge(df1, df2)
print(f3)
# data1 key data2
# 0 0 b 1
# 1 1 b 1
# 2 6 b 1
# 3 2 a 0
# 4 4 a 0
# 5 5 a 0
如果没有指定, merger会讲重叠列的列名当作键, 可以显示指定一下
f4 = pd.merge(df1, df2, on='key')
print(f4)
注意里面的c d 以及相关的数据消失啦。 默认情况下merge 做的事inner连接, 结果中的键是交集。
如果两个对象的列名不同, 也可以分别进行指定
df1 = DataFrame({'key1': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
'data1': range(7)
})
df2 = DataFrame({'key2': ['a', 'b', 'd'], 'data2': range(3)})
print(df1)
# data1 key1
# 0 0 b
# 1 1 b
# 2 2 a
# 3 3 c
# 4 4 a
# 5 5 a
# 6 6 b
print("=========")
print(df2)
# data2 key2
# 0 0 a
# 1 1 b
# 2 2 d
df3 = pd.merge(df1, df2, left_on='key1', right_on='key2')
print(df3)
# data1 key1 data2 key2
# 0 0 b 1 b
# 1 1 b 1 b
# 2 6 b 1 b
# 3 2 a 0 a
# 4 4 a 0 a
# 5 5 a 0 a