【问题标题】:Add data from multiple dataframes by column index按列索引添加来自多个数据帧的数据
【发布时间】:2021-02-21 12:31:20
【问题描述】:

我有多个类似这样的数据框:

date                   val1     val2     val3    val4
2020-11-06 10:00:00     0.5      1.0      1.1     1.2
2020-11-06 11:00:00     1.5      1.3      0.1     1.3
2020-11-06 12:00:00     4.5      1.2      2.1     5.2

date                   val1     val2     val3    val4
2020-11-06 10:00:00     1.5      2.0      2.1     2.2
2020-11-06 11:00:00     2.5      2.3      1.1     2.3
2020-11-06 12:00:00     5.5      2.2      3.1     6.2

所以一些日期,然后一些值。在每个数据框中,日期都是相同的,这使得日期成为 id。我想做的只是添加按日期索引的所有数据框中的值。所以在上面的例子中,结果数据框应该是:

date                   val1     val2     val3    val4
2020-11-06 10:00:00     2.0      3.0      3.2     3.4
2020-11-06 11:00:00     4.0      3.6      1.2     3.6
2020-11-06 12:00:00    10.0      3.4      5.2    11.4

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

您只需要设置索引并添加数据框:

out = df1.set_index("date") + df2.set_index("date")

print(out)
                     val1  val2  val3  val4
date                                       
2020-11-06 10:00:00   2.0   3.0   3.2   3.4
2020-11-06 11:00:00   4.0   3.6   1.2   3.6
2020-11-06 12:00:00  10.0   3.4   5.2  11.4

如果你不想让"date"成为官方的index,你可以直接打电话给.reset_index()

out = out.reset_index()
print(out)
                  date  val1  val2  val3  val4
0  2020-11-06 10:00:00   2.0   3.0   3.2   3.4
1  2020-11-06 11:00:00   4.0   3.6   1.2   3.6
2  2020-11-06 12:00:00  10.0   3.4   5.2  11.4

另一种方法是将内置的sum 与生成器表达式一起使用,这样您就不需要在每个DataFrame 上显式设置index

out = sum(df.set_index("date") for df in (df1, df2))

print(out)
                     val1  val2  val3  val4
date                                       
2020-11-06 10:00:00   2.0   3.0   3.2   3.4
2020-11-06 11:00:00   4.0   3.6   1.2   3.6
2020-11-06 12:00:00  10.0   3.4   5.2  11.4

【讨论】:

    【解决方案2】:

    您可以添加两个数据框和.set_index:

    (df1+df2).set_index('date')
    

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 2014-04-28
      • 2021-09-26
      • 2021-12-23
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      相关资源
      最近更新 更多