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

pandas多dataframe缺失时间戳时按时间间隔求和及缺失时间获取方法

多DataFrame按时间戳对齐求和及缺失时间统计实现方案

实现逻辑

  • 将所有DataFrame的字符串索引转换为datetime类型,避免时间格式识别错误
  • 生成覆盖全部时间范围的5分钟间隔完整时间序列,作为对齐基准
  • 合并所有DataFrame并按时间索引自动对齐,缺失位置自动填充NaN
  • 按行求和(默认跳过NaN)得到同时间点的produced字段总和
  • 对比完整时间序列,提取各DataFrame缺失的时间戳

完整可运行代码

import pandas as pd

# 示例数据
data1 = {'produced':  [19.7, 39.1, 86.4, 167.1]}
data2 = {'produced':  [22.4, 95, 144.3, 300.2]}
data3 = {'produced':  [15.1, 44.1, 80, 302.5]}

df1 = pd.DataFrame(data1, index = ['01/06/2021 09:35', '01/06/2021 09:40', '01/06/2021 09:45', '01/06/2021 09:50'])
df2 = pd.DataFrame(data2, index = ['01/06/2021 09:35', '01/06/2021 09:45', '01/06/2021 09:50', '01/06/2021 09:55'])
df3 = pd.DataFrame(data3, index = ['01/06/2021 09:35', '01/06/2021 09:40', '01/06/2021 09:45', '01/06/2021 09:55'])

# 1. 统一转换索引为datetime类型
dfs = [df1, df2, df3]
for df in dfs:
    df.index = pd.to_datetime(df.index, format='%d/%m/%Y %H:%M')

# 2. 生成5分钟间隔的完整时间基准序列
start_time = min([df.index.min() for df in dfs])
end_time = max([df.index.max() for df in dfs])
full_timestamps = pd.date_range(start=start_time, end=end_time, freq='5T')

# 3. 合并所有DataFrame按索引对齐
merged_df = pd.concat(dfs, axis=1, keys=['df1', 'df2', 'df3'])
merged_df.columns = [f'{source}_{col}' for source, col in merged_df.columns]

# 4. 按时间点求和(自动跳过缺失值)
merged_df['total_produced'] = merged_df.sum(axis=1, skipna=True)

# 5. 统计各DataFrame缺失的时间戳
missing_timestamps = {}
all_missing = []
for idx, df in enumerate(dfs, 1):
    missing = full_timestamps.difference(df.index)
    missing_timestamps[f'df{idx}'] = missing.to_list()
    all_missing.extend(missing.to_list()) # 所有缺失时间汇总到同一个数组

# 结果输出
print("按时间对齐后的求和结果:")
print(merged_df[['total_produced']])
print("\n各DataFrame缺失的时间戳:")
for df_name, missing in missing_timestamps.items():
    print(f"{df_name}缺失:{[ts.strftime('%d/%m/%Y %H:%M') for ts in missing]}")
print("\n所有缺失时间汇总:", [ts.strftime('%d/%m/%Y %H:%M') for ts in all_missing])

运行输出示例

按时间对齐后的求和结果:
                     total_produced
2021-06-01 09:35:00            57.2
2021-06-01 09:40:00            83.2
2021-06-01 09:45:00           261.4
2021-06-01 09:50:00           311.3
2021-06-01 09:55:00           602.7

各DataFrame缺失的时间戳:
df1缺失:['01/06/2021 09:55']
df2缺失:['01/06/2021 09:40']
df3缺失:['01/06/2021 09:50']

所有缺失时间汇总: ['01/06/2021 09:55', '01/06/2021 09:40', '01/06/2021 09:50']

内容的提问来源于stack exchange,提问作者Pedro de Sá

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:24:05