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

如何基于日期将日级DataFrame数据合并到分钟级DataFrame中?

当然有办法啦!这在时间序列数据处理里是很常见的需求,用Pandas就能轻松搞定。核心思路是把分钟数据的时间戳提取出日期部分,然后和日数据的日期列做匹配合并。下面我给你一步步拆解具体操作:

步骤1:确保时间/日期列是datetime类型

首先得保证你的时间列是Pandas的datetime格式,不然没法准确提取日期。如果原本是字符串格式,先做转换:

# 转换df_1的分钟时间戳为datetime类型
df_1['timestamp'] = pd.to_datetime(df_1['timestamp'])
# 转换df_2的日期列为datetime类型(如果原本是字符串)
df_2['date'] = pd.to_datetime(df_2['date'])

步骤2:提取分钟数据的纯日期

从df_1的时间戳里剥离出日期部分,生成一个临时列用来和df_2匹配:

df_1['date'] = df_1['timestamp'].dt.date
# 把df_2的日期列也转成date类型,保证两边匹配键格式一致
df_2['date'] = df_2['date'].dt.date

步骤3:按日期合并两个DataFrame

用pd.merge()做左连接(how='left'),这样能保留所有分钟数据,同时自动匹配对应日期的日数据:

merged_df = pd.merge(df_1, df_2, on='date', how='left')

进阶技巧:不用额外生成日期列

如果你不想新增列,也可以直接把提取日期的操作作为合并键,一步到位:

merged_df = pd.merge(
    df_1,
    df_2,
    left_on=df_1['timestamp'].dt.date,
    right_on=df_2['date'].dt.date,
    how='left'
)
# 清理自动生成的冗余列并重命名
merged_df = merged_df.drop(columns=['key_0', 'date_y'])
merged_df = merged_df.rename(columns={'date_x': 'date'})

示例效果展示

假设你的df_1是分钟数据:

timestampvalue_min
2023-10-01 00:00:0010
2023-10-01 00:01:0012
2023-10-02 00:00:0015

df_2是日数据:

datevalue_day
2023-10-01100
2023-10-02200

合并后会得到:

timestampvalue_mindatevalue_day
2023-10-01 00:00:00102023-10-01100
2023-10-01 00:01:00122023-10-01100
2023-10-02 00:00:00152023-10-02200

注意事项

  • 如果数据带有时区信息,一定要先统一时区再提取日期,避免时区差导致日期匹配错误。
  • 如果df_2存在缺失的日期,合并后对应分钟行的日数据会显示为NaN,你可以用fillna()填充缺失值(比如0、前一天数据等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:00:42