【问题标题】: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 感谢您的快速回复。我希望这些示例有所帮助。

标签: python pandas dataframe


【解决方案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

【讨论】:

  • 非常感谢!这正是我所需要的。
猜你喜欢
  • 2022-01-23
  • 2017-04-14
  • 2019-01-20
  • 1970-01-01
  • 2023-04-03
  • 2021-07-15
  • 1970-01-01
  • 2022-01-23
  • 2018-08-03
相关资源
最近更新 更多