Python 如何合并两个数据帧并添加重叠列
我试图在同一个DocID上合并多个数据帧,然后将权重相加,但当我合并时,它会创建权重x,权重y。这只适用于两个数据帧,但要合并的数据帧数量会根据用户输入进行更改,因此合并会多次创建权重x,权重y。那么,我如何合并2个以上的数据帧,使它们在DocID上合并,并求和权重呢 例如:Python 如何合并两个数据帧并添加重叠列,python,pandas,dataframe,Python,Pandas,Dataframe,我试图在同一个DocID上合并多个数据帧,然后将权重相加,但当我合并时,它会创建权重x,权重y。这只适用于两个数据帧,但要合并的数据帧数量会根据用户输入进行更改,因此合并会多次创建权重x,权重y。那么,我如何合并2个以上的数据帧,使它们在DocID上合并,并求和权重呢 例如: df1= DocID Weight 1 4 2 7 3 8 df2= DocID Weight 1 5 2 9 8
df1= DocID Weight
1 4
2 7
3 8
df2= DocID Weight
1 5
2 9
8 1
finalDf=
DocID Weight
1 9
2 16
你能试试这个
pd.merge(df1,df2,on=['DocID'])。设置索引(['DocID'])。求和(axis=1)
现在,您可以为sum列指定任何名称。您可以合并,将“DocID”列设置为索引,然后将其余列相加。然后,您可以根据需要重新索引并重命名最终生成的_df中的列:
df_final = pd.merge(df1, df2, on=['DocID']).set_index(['DocID']).sum(axis=1)
df_final = pd.DataFrame({"DocID": df_final.index, "Weight":df_final}).reset_index(drop=True)
输出:
>>> df_final
DocID Weight
0 1 9
1 2 16
我得到一个错误,说“不能合并一个没有名字的系列”的作品!非常感谢你。我试图提高投票率,但我的代表很低,不用担心!如果有帮助,接受答案会很好:
df1.set_index('DocID').add(df2.set_index('DocID')).dropna()
Weight
DocID
1 9.0
2 16.0