使用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
相关产品推荐
相关产品推荐

