You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按日期索引对多个DataFrame的数值列进行求和合并

解决多个同结构DataFrame按日期对应列求和的问题

这事儿在pandas里其实挺容易实现的,既然你的所有DataFrame日期完全对齐,这里给你几种实用的办法:

方法1:直接相加(适合少数几个DataFrame)

如果只有2-3个DataFrame,直接相加是最直观的,pandas会自动按date列对齐数据:

首先我们先模拟你的数据:

import pandas as pd

# 第一个DataFrame
data1 = {
    'date': ['2020-11-06 10:00:00', '2020-11-06 11:00:00', '2020-11-06 12:00:00'],
    'val1': [0.5, 1.5, 4.5],
    'val2': [1.0, 1.3, 1.2],
    'val3': [1.1, 0.1, 2.1],
    'val4': [1.2, 1.3, 5.2]
}
df1 = pd.DataFrame(data1)

# 第二个DataFrame
data2 = {
    'date': ['2020-11-06 10:00:00', '2020-11-06 11:00:00', '2020-11-06 12:00:00'],
    'val1': [1.5, 2.5, 5.5],
    'val2': [2.0, 2.3, 2.2],
    'val3': [2.1, 1.1, 3.1],
    'val4': [2.2, 2.3, 6.2]
}
df2 = pd.DataFrame(data2)

然后执行相加操作,为了确保对齐更稳妥,可以先把date设为索引:

# 将date设为索引
df1_indexed = df1.set_index('date')
df2_indexed = df2.set_index('date')

# 直接相加
result = df1_indexed + df2_indexed

# 把索引变回列(如果需要保留date作为普通列的话)
result = result.reset_index()

方法2:Concat + Groupby(适合大量DataFrame)

如果你有很多个DataFrame(比如5个以上),把它们放进列表后用concat合并,再按date分组求和会更高效:

# 把所有DataFrame放进一个列表
df_list = [df1, df2]  # 可以继续添加更多df,比如df3、df4...

# 合并所有DataFrame
combined = pd.concat(df_list)

# 按date分组求和,然后恢复date为列
result = combined.groupby('date').sum().reset_index()

方法3:使用pd.sum()函数

还有一种更简洁的方式,直接用pandas的sum函数传入所有DataFrame的列表,同样能实现求和:

# 先把每个df的date设为索引,再传入sum函数
indexed_dfs = [df.set_index('date') for df in [df1, df2]]
result = pd.sum(indexed_dfs, axis=0).reset_index()

最终结果

不管用哪种方法,你都会得到想要的求和结果:

dateval1val2val3val4
2020-11-06 10:00:002.03.03.23.4
2020-11-06 11:00:004.03.61.23.6
2020-11-06 12:00:0010.03.45.211.4

内容的提问来源于stack exchange,提问作者Denver Dang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:37:57