我有两个数据帧(df1/df2(,每个数据帧都有两个值列(X/Y(。两个数据帧都应该合并成一个新的数据帧(df3(。然而,我想把X列中的重复项加起来。因此,如果X的值在两个数据帧中匹配(例如:df1中的"B"和df2中的"B"(,我希望Y的值(在df3中(加起来(例如"2"+"4"="6"(。df3:";B〃="6〃;
df1 = [["A", "1"], ["B", "2"], ["C", "3"]]
df2 = [["B", "4"], ["C", "5"], ["D", "6"]]
df1 = pd.DataFrame(df1, columns=["X", "Y"])
df2 = pd.DataFrame(df2, columns=["X", "Y"])
df1['Y'] = df1['Y'].astype(int)
df2['Y'] = df2['Y'].astype(int)
df3 = df1.add(df2, fill_value=0)
print(df3)
结果是:
X Y
0 AB 5
1 BC 7
2 CD 9
然而,我想要实现的是:
X Y
0 A 1
1 B 6
2 C 8
3 D 6
有什么建议吗?提前感谢!
您正在查找pd.concat()
。
请确保指定axis=0
,因为这表示应在行而不是列上进行串联。注意,axis=0
表示行,axis=1
表示列。
df3 = pd.concat([df1,df2],axis=0, ignore_index=True)
打印:
X Y
0 D 1
1 B 2
2 C 3
3 D 4
4 E 5
5 F 6
编辑
考虑到你最近的评论,当X重复时,下面的总结Y如何:
df3['Y_new'] = df3.groupby('X')['Y'].transform('sum')
df3.drop_duplicates('X',inplace=True)
打印:
X Y
0 D 1
1 B 2
2 C 3
4 E 5
5 F 6