如何将DataFrame列原地转换为Pandas Timestamps类型?
解决方案
你不需要专门找针对pd.Timestamp的特殊转换方法,pandas 本身的 datetime 类型和pd.Timestamp是原生配套的:
- 列层面以
datetime64[ns](numpy 提供的底层存储格式)存储,保证向量化操作的性能 - 你访问列中任意单个值时,返回的对象默认就是
pd.Timestamp类型,完全符合你的使用需求
最优原地转换实现
针对你给出的2022-06-03T00:00:00.000Z格式(带Z后缀的UTC标准时间字符串),直接用pd.to_datetime()转换即可,加上utc=True参数可以正确识别时区,避免解析警告:
# 将your_column替换为你实际的列名 df['your_column'] = pd.to_datetime(df['your_column'], utc=True)
转换后可以验证取值类型:
# 取列中第一个值查看类型 type(df['your_column'].iloc[0]) # 输出结果为 pandas._libs.tslibs.timestamps.Timestamp
补充:转换后列的
dtype会显示为datetime64[ns, UTC],这是pandas 时间类型的正常存储形式,所有pd.Timestamp支持的方法、属性都可以正常在列上向量化调用,不需要额外处理。
非必要不推荐的写法
如果你一定要显式将每个元素逐个转为pd.Timestamp,可以用apply实现,但该写法是逐行循环执行,数据量超过10万行时性能会远差于上面的向量化写法:
df['your_column'] = df['your_column'].apply(pd.Timestamp)
内容的提问来源于stack exchange,提问作者orome
相关产品推荐
相关产品推荐

