有2个数据框具有不同的列。
我试图根据前三列将它们串联起来。

   a b c X
1  H A 8 1
2  M D 3 2
3  H A 9 3
4  L C 9 4

   a b c Y
1  H A 8 4
2  M D 3 3
3  H A 9 2
4  L C 9 2


这是预期的结果:

   a b c X Y
1  H A 8 1 4
2  M D 3 2 3
3  H A 9 3 2
4  L C 9 4 2


我找不到连接它们的有效方法!

最佳答案

我认为merge应该很好用:

df = pd.merge(df1, df2, on=['a','b','c'])


如果需要动态使用前三列:

print (df1.columns[:3].tolist())
['a', 'b', 'c']

df = pd.merge(df1, df2, on=df1.columns[:3].tolist())




print (df)
   a  b  c  X  Y
0  H  A  8  1  4
1  M  D  3  2  3
2  H  A  9  3  2
3  L  C  9  4  2


但是如果可能的话,前三个列在两个DataFrame中都不相同,需要它们联接:

cols = df1.columns[:3].tolist()
df2 = df2.rename(columns=dict(zip(df2.columns[:3], cols)))
df = pd.merge(df1, df2, on=cols)

关于python - 如何根据特定列串联两个数据框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47346542/

10-13 08:37