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

如何合并不同时间粒度的两个Pandas DataFrame并按日期时间排序

Pandas 不同时间粒度表合并排序实现方法

操作分三步完成:

  • 对齐两个DataFrame的字段结构:日度表daily_df没有time列,先给这列赋值为空字符串,和小时表sixtymin_df的字段保持完全一致
  • 纵向拼接两个表
  • 按规则排序:先按date字段升序,同日期下按time字段升序——空字符串的排序优先级早于任何时间字符串,刚好能让日度数据排在当日所有小时数据前面,完全匹配预期输出

完整实现代码:

import pandas as pd

# 1. 给日度数据补充空time列,对齐字段
daily_df['time'] = ''

# 2. 纵向合并两个表,重置索引
merged_df = pd.concat([daily_df, sixtymin_df], ignore_index=True)

# 3. 按要求排序,重置索引
# 注意:如果date是dd/mm/yyyy格式的字符串,先转datetime类型避免字符串排序逻辑错误
merged_df['date'] = pd.to_datetime(merged_df['date'], format='%d/%m/%Y')
merged_df = merged_df.sort_values(by=['date', 'time'], ignore_index=True)
# 如果需要保留原字符串样式的日期输出,排序后转回去即可
merged_df['date'] = merged_df['date'].dt.strftime('%d/%m/%Y')

执行后输出的merged_df结构和示例预期完全一致:

date      time change    type
0  14/06/2022            50%   daily
1  14/06/2022  12:00:00    27%  hourly
2  14/06/2022  13:00:00    12%  hourly
3  14/07/2022            46%   daily

补充说明:如果后续需要调整日度数据在当日的排序位置,不用空字符串,可以给日度数据的time列赋值'00:00:00'或者其他你想要锚定的排序时间点即可,排序逻辑不用改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:15:33