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

如何在pandas dataframe中新增列取同一ID对应1小时后的Capacity值

实现代码及说明

首先你需要先将DateTime列转换为pandas内置的时间格式,再通过关联匹配的方式拿到1小时后对应记录的Capacity值,该方案对时间序列无严格连续要求,兼容性更强:

import pandas as pd

# 1. 转换时间格式,按ID、时间排序保证匹配正确性
df['DateTime'] = pd.to_datetime(df['DateTime'])
df = df.sort_values(by=['ID', 'DateTime']).reset_index(drop=True)

# 2. 生成当前行要匹配的1小时后的目标时间
df['target_time'] = df['DateTime'] + pd.Timedelta(hours=1)

# 3. 自关联匹配对应时间的Capacity值
df = df.merge(
    df[['ID', 'DateTime', 'Capacity']],
    left_on=['ID', 'target_time'],
    right_on=['ID', 'DateTime'],
    how='left',
    suffixes=('', '_next_1h')
)

# 4. 清理多余的辅助列
df = df.drop(columns=['target_time', 'DateTime_y'])

如果你的数据满足每个ID分组下的所有记录严格按1小时间隔排序、无缺失/冗余记录,也可以用更简洁的行偏移方案,性能更高:

df['DateTime'] = pd.to_datetime(df['DateTime'])
df = df.sort_values(by=['ID', 'DateTime']).reset_index(drop=True)
df['Capacity_next_1h'] = df.groupby('ID')['Capacity'].shift(-1)

两种方案中如果对应ID不存在1小时后的匹配记录,新增列的值会自动填充为NaN,符合逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:27:03