有2个数据帧具有不同的列。 我试图根据前3列连接它们。
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
我无法找到连接它们的有效方法!!
答案 0 :(得分:1)
我认为merge
应该很好用:
df = pd.merge(df1, df2, on=['a','b','c'])
如果需要动态使用前3列:
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)
答案 1 :(得分:0)
ls1 = [设置([' H',' A',8,1]),设置([' H',' A& #39;,8,4])]
ls1 = set()。union(* ls1)
print ls1
设置([' A',1,4,8,' H'])
答案 2 :(得分:0)
new_df = pd.merge(df1, df2)
print (new_df)
output:- 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