如何指定pandas.to_datetime('now')的输出格式?
解决Pandas Timestamp格式化问题
先帮你理清两个报错的核心原因:
- 用
pd.to_datetime('now', format='%Y%m%d-%H%M%S')触发ValueError:format参数的作用是解析输入字符串,告诉Pandas“按照这个格式去解读我传入的时间字符串”,而非用来输出格式化结果。你传入的是'now',它完全不符合%Y%m%d-%H%M%S的格式规则,所以直接报错。 - 直接调用
pd.to_datetime('now').dt_strftime(...)出现AttributeError:dt_strftime是Pandas的Series或DatetimeIndex专属方法,而pd.to_datetime('now')返回的是单个Timestamp对象——单个时间对象没有dt访问器(dt是给批量时间序列用的),自然调用失败。
正确的格式化方案
针对单个Timestamp对象,直接用它自带的strftime方法即可,这和Python原生datetime对象的用法完全一致,你的Python 3.6.4和Pandas 0.22.0版本完全支持:
import pandas as pd current_ts = pd.to_datetime('now') formatted_time = current_ts.strftime('%Y%m%d-%H%M%S') print(formatted_time) # 输出示例:'20180509-095636'
如果之后需要处理批量时间序列(比如Series类型),再用dt访问器配合strftime:
time_series = pd.Series([pd.to_datetime('now'), pd.to_datetime('now')]) formatted_series = time_series.dt.strftime('%Y%m%d-%H%M%S') print(formatted_series)
内容的提问来源于stack exchange,提问作者absurd
相关产品推荐
相关产品推荐

