如何将一个pandas数据帧的列与另一个数据帧的每一列相加?

时间:2017-07-05 09:29:19

标签: python pandas dataframe

情况:

两个数据帧(df1和df2)具有相同的三个索引,例如" A"," B"," C"。 df1和df2的列数不同。 df1和df2中的所有单元格都填充了float类型的数据。

DF1:

   AA    BB   CC   DD
A  28.0   2.3  2.0  113
B  24.0   2.4  2.4  116
C  33.5  10.0  4.0    0

DF2:

    AAA   BBB   CCC    DDD    EEE
A  1.01  4.04  7.07  10.10  13.13
B  2.02  5.05  8.08  11.11  14.14
C  3.03  6.06  9.09  12.12  15.15

目标:

从df2中选择的列(例如" BBB")与每列df1相加后,结果应存储在新的数据帧(df_new)中。 df_new的格式应为df1(列数和行数),并且与df1具有相同的列名和索引。

new_df:

    AA      BB      CC      DD
A   32.04   6.34    6.04    117.04
B   29.05   7.45    7.45    121.05
C   39.56   16.06   10.06   6.06

我的方法:

为了将df2的第3列与df1的每一列相加,我尝试了:

df_new = df1.add(df2.iloc [:,2])

结果:

根据需要,df_new在结构和标签中匹配df1。 问题是:所有细胞都显示出NaN"而不是所需的总和作为花车。

df_new:

    AA  BB  CC  DD
A   NaN NaN NaN NaN
B   NaN NaN NaN NaN
C   NaN NaN NaN NaN

1 个答案:

答案 0 :(得分:1)

这是一种方法,使用add

In [293]: df1.add(df2['BBB'], axis=0)
Out[293]:
      AA     BB     CC      DD
A  32.04   6.34   6.04  117.04
B  29.05   7.45   7.45  121.05
C  39.56  16.06  10.06    6.06