Python 如何合并两个数据帧并添加重叠列

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

我试图在同一个DocID上合并多个数据帧,然后将权重相加,但当我合并时,它会创建权重x,权重y。这只适用于两个数据帧,但要合并的数据帧数量会根据用户输入进行更改,因此合并会多次创建权重x,权重y。那么,我如何合并2个以上的数据帧,使它们在DocID上合并,并求和权重呢

例如:

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