如何将一个熊猫数据框的一列与另一个数据框的每一列相加?

Posted

技术标签:

【中文标题】如何将一个熊猫数据框的一列与另一个数据框的每一列相加?【英文标题】:How to sum a column of one pandas dataframe to each column of another dataframe? 【发布时间】:2017-12-08 21:17:42 【问题描述】:

情况:

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

【问题讨论】:

拥有示例数据框和预期输出会有所帮助。 @JohnGalt 感谢您的快速回复。我希望这些示例有所帮助。 【参考方案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

【讨论】:

非常感谢!这正是我所需要的。

以上是关于如何将一个熊猫数据框的一列与另一个数据框的每一列相加?的主要内容,如果未能解决你的问题,请参考以下文章

如何为熊猫数据框的每一列应用具有不同时间常数的一阶过滤器?

如何在循环中将不同大小的列表附加到空熊猫数据框的每一列?

将函数应用于熊猫中数据框的每一列

将大熊猫数据帧的每一列与同一数据帧的每一列相乘的最有效方法

如何计算熊猫数据框中每一列的唯一性?

在 spark scala 中对数据框的每一列进行排序