如何从UTC时间戳数据集中提取24小时制hour字段
解决提取24小时制小时字段的问题
你的问题根源在于两个错误操作:
- 把解析好的datetime对象转成了12小时制(
%I)的字符串,这不仅完全没必要,还丢失了datetime类型的属性,后续调用.dt.hour本质上是对字符串操作,逻辑不成立(实际运行会报错)。 - 原数据的时间戳本身就是24小时制的UTC格式,根本不需要转成带AM/PM的格式。
直接用以下代码即可正确提取24小时制的hour字段:
# 解析date列为datetime类型,保留datetime对象 df["timestamp"] = pd.to_datetime(df["date"]) # 提取24小时制小时数 df['hour'] = df['timestamp'].dt.hour
如果需要生成可读的24小时制时间字符串,建议单独新增一列,不要覆盖原有的datetime列:
df["timestamp"] = pd.to_datetime(df["date"]) # 新增24小时制格式的字符串列 df["timestamp_str"] = df["timestamp"].apply(lambda x: x.strftime("%Y-%m-%d %H:%M:%S UTC")) # 从datetime列提取小时数 df['hour'] = df['timestamp'].dt.hour
原数据中的时间比如2010-03-07 01:21:00 UTC,解析后提取的hour为1;若遇到下午时段的时间(如2023-01-01 13:00:00 UTC),提取的hour会是13,完全符合24小时制的要求。
内容的提问来源于stack exchange,提问作者dim GOROH
相关产品推荐
相关产品推荐

