组合两个panda数据帧,将依赖于X列的Y列相加重复



我有两个数据帧(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      

最新更新