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

如何匹配DataFrame列名与另一DataFrame时间索引并按时间差填充新列?

解决方案

核心思路:根据df_rates的索引(距基准时间的分钟数)计算出对应匹配时间,再用该时间戳从df_profit中提取对应利润值

步骤1:提取并转换基准时间

先把df_rates的列名(基准时间)转为datetime类型,方便后续时间运算:

import pandas as pd

# 提取df_rates的基准时间列名
base_time = pd.to_datetime(df_rates.columns[0])

步骤2:计算每行的匹配时间

利用df_rates的索引(提前的分钟数),计算出需要和df_profit匹配的时间:

# 基准时间减去索引对应的分钟数,得到匹配时间
df_rates['match_time'] = base_time - pd.to_timedelta(df_rates.index, unit='m')

步骤3:匹配利润值并生成新列

确保df_profit的索引为datetime类型后,用map方法匹配对应利润值:

# 确保df_profit索引是datetime类型(若已满足可跳过)
df_profit.index = pd.to_datetime(df_profit.index)

# 匹配利润,无匹配项自动填充NaN
df_rates['New_column'] = df_rates['match_time'].map(df_profit['Profit'])

# 可选:删除中间辅助列match_time
df_rates = df_rates.drop('match_time', axis=1)

最终结果

运行后得到的df_rates与预期一致:

2012-03-31 23:45:00  New_column
Mins before time                                    
0                                  113.1     3504.664
5                                  112.1          NaN
10                                 113.1          NaN
15                                 113.17     1215.760
20                                 103.17          NaN
25                                 133.17          NaN
30                                 101.39      -21.480

补充说明

  • 若需要将NaN替换为空字符串或其他默认值,可使用df_rates['New_column'] = df_rates['New_column'].fillna('')
  • 若df_profit存在重复时间戳,建议先处理重复项再进行匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:10:46