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

如何批量访问Pandas DataFrame元素属性并转换为timedelta?

解决方案

你之前的代码报错,是因为df.time是pandas的Series对象,不能直接调用.hour属性——单个Timestamp对象有.hour属性,但Series需要用.dt访问器来批量获取每个元素的时间属性。

以下两种批量处理的方法都可以:

方法1:结合dt访问器和apply

import pandas as pd
import numpy as np

index = [0, 1]
df = pd.DataFrame(columns=['time', 'timedelta'], index=index)
# 推荐用方括号索引列,比点语法更稳妥(避免列名和方法名冲突)
df['time'] = [pd.Timestamp('2022-04-07 22:10:00'), pd.Timestamp('2022-04-07 22:11:00')]
# 批量提取hour,转成timedelta
df['timedelta'] = df['time'].dt.hour.apply(lambda x: np.timedelta64(x, 'h'))
print(df)

方法2:用pandas内置的to_timedelta

这种方法更简洁,不需要手动调用np.timedelta64:

import pandas as pd
import numpy as np

index = [0, 1]
df = pd.DataFrame(columns=['time', 'timedelta'], index=index)
df['time'] = [pd.Timestamp('2022-04-07 22:10:00'), pd.Timestamp('2022-04-07 22:11:00')]
df['timedelta'] = pd.to_timedelta(df['time'].dt.hour, unit='h')
print(df)

两种方法运行后都会得到正确结果:

time timedelta
0 2022-04-07 22:10:00  22 hours
1 2022-04-07 22:11:00  21 hours

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:45:55