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

使用Pandas格式化日期:pd.to_datetime方法使用疑问求助

解决Pandas中Unix时间戳的格式化问题

嘿,我完全懂你的困惑!你遇到的'1230768318'是秒级Unix时间戳——也就是从1970年1月1日UTC开始计算的秒数,直接用默认参数的pd.to_datetime()肯定会出错,因为它默认会把数字当成普通的日期数值来解析(比如把1230768318当成2012-03-07这种格式)。

下面是具体的解决步骤,包你搞定:

1. 核心:指定时间戳的单位

pd.to_datetime()有个关键参数unit,用来告诉Pandas这个数字代表的时间单位。对于秒级时间戳,我们需要设置unit='s'。

2. 完整代码示例

假设你的DataFrame里有一列叫timestamp_col,存储的是这种字符串/数字格式的时间戳:

import pandas as pd

# 模拟你的数据
df = pd.DataFrame({'timestamp_col': ['1230768318', '1230854718', '1230941118']})

# 第一步:如果列是字符串类型,先转成数值型(int/float都可以)
df['timestamp_col'] = pd.to_numeric(df['timestamp_col'])

# 第二步:转换为datetime类型,指定unit='s'
df['datetime'] = pd.to_datetime(df['timestamp_col'], unit='s')

# 可选:把datetime格式化为你需要的字符串样式(比如YYYY-MM-DD HH:MM:SS)
df['formatted_datetime'] = df['datetime'].dt.strftime('%Y-%m-%d %H:%M:%S')

print(df)

运行后你会得到:

timestamp_col                  datetime     formatted_datetime
0     1230768318 2009-01-01 12:45:18+00:00  2009-01-01 12:45:18
1     1230854718 2009-01-02 12:45:18+00:00  2009-01-02 12:45:18
2     1230941118 2009-01-03 12:45:18+00:00  2009-01-03 12:45:18

3. 额外提示:不同时间单位的处理

  • 如果你的时间戳是毫秒级(比如13位数字,如1620000000000),就用unit='ms'
  • 如果是微秒级(16位数字),用unit='us'
  • 如果时间戳已经是数值类型(不是字符串),可以跳过pd.to_numeric()这一步

这样处理后,你就能顺利把这种时间戳转换成可读的日期格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 06:22:32