赞
踩
这里记录一下pandas.merge()
函数的用法。
DataFrame
一和二中的共有参数将两个DataFrame
融合起来。import pandas as pd df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}) df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}) result = pd.merge(df1, df2, on='key') print(result) """ result: key A B C D 0 K0 A0 B0 C0 D0 1 K1 A1 B1 C1 D1 2 K2 A2 B2 C2 D2 3 K3 A3 B3 C3 D3 """
上述表示使用共有key
参数将df1
与df2
融合起来。
key1
与key2
参数中共有的对应参数将df1
与df2
合并起来import pandas as pd df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'], 'key2': ['K0', 'K1', 'K0', 'K1'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}) df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'], 'key2': ['K0', 'K0', 'K0', 'K0'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}) result = pd.merge(df1, df2, on=['key1', 'key2']) print(result) """ result: key1 key2 A B C D 0 K0 K0 A0 B0 C0 D0 1 K1 K0 A2 B2 C1 D1 2 K1 K0 A2 B2 C2 D2 """
我们可以看到,在df1
中存在[K0, K0]
的对应关系,并且df2
中也存在。此外,df1
中[K1, K0]
的对应关系,df2
中存在两个[K1,K0]
的对应关系,因此我们最终会得到三行数据。并且,如果我们不设置on
参数,程序默认会使用df1
与df2
中共有的列对象,即这里的key1
与key2
参数。如果这里我们不设置on
参数。得到的结果与上述结果是一致的。
代码如下:
import pandas as pd df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'], 'key2': ['K0', 'K1', 'K0', 'K1'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}) df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'], 'key2': ['K0', 'K0', 'K0', 'K0'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}) result = pd.merge(df1, df2) print(result) """ result: key1 key2 A B C D 0 K0 K0 A0 B0 C0 D0 1 K1 K0 A2 B2 C1 D1 2 K1 K0 A2 B2 C2 D2 """
outer
参数将df1
与df2
合并起来。import pandas as pd df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'], 'key2': ['K0', 'K1', 'K0', 'K1'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}) df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'], 'key2': ['K0', 'K0', 'K0', 'K0'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}) result = pd.merge(df1, df2, how='outer', on=['key1', 'key2']) print(result) """ result: key1 key2 A B C D 0 K0 K0 A0 B0 C0 D0 1 K0 K1 A1 B1 NaN NaN 2 K1 K0 A2 B2 C1 D1 3 K1 K0 A2 B2 C2 D2 4 K2 K1 A3 B3 NaN NaN 5 K2 K0 NaN NaN C3 D3 """
outer
参数类似于求并集,如果在一个DateFrame
中不存在与另一个DataFrame
匹配的元素,那么用NaN
进行填充。上述结果一目了然中。这里不做过多的解释,大家如果有疑问,欢迎留言。
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。