如何格式化熊猫日期时间? [复制]

Posted

技术标签:

【中文标题】如何格式化熊猫日期时间? [复制]【英文标题】:How to format pandas datetime? [duplicate] 【发布时间】:2019-02-24 05:20:05 【问题描述】:

我有一个正常日期的熊猫系列,比如 2017-01-01。我试图在 lambda 函数中调用它,但如果我调用 row['date'],它会返回 '2017-01-01T00:00:00.000000000'。使用 strptime 将其转换为日期时间的正确格式是什么?

感谢帮助

【问题讨论】:

您的系列是日期时间类型的吗?也许pd.to_datetime(s, format='%Y%m%d') ?? 不认为它真的有必要 - 唯一相关的数据点是日期字符串 '2017-01-01T00:00:00.000000000' 如何使用 strptime 将其转换为日期时间? 【参考方案1】:

数据:

df = pd.DataFrame('date':['2017-01-01T00:00:00.000000000','2017-01-02T00:00:00.000000000','2017-01-03T00:00:00.000000000'])

您可以使用pd.to_datetime 转换整列。

>>> pd.to_datetime(df['date'])
0   2017-01-01
1   2017-01-02
2   2017-01-03
Name: date, dtype: datetime64[ns]

>>> df['date'][0]
Timestamp('2017-01-01 00:00:00')

如果你有一个单独的单元格,你也可以使用pd.to_datetime

>>> pd.to_datetime('2017-01-01T00:00:00.000000000')
Timestamp('2017-01-01 00:00:00')

如果需要,然后strftime

>>> pd.to_datetime('2017-01-01T00:00:00.000000000').strftime('%Y/%m/%d')
'2017/01/01'

但是使用pd.Timestamp 转换单个单元格会更快:

>>> %timeit pd.Timestamp('2017-01-01T00:00:00.000000000')
2.18 µs ± 8.56 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

>>> %timeit pd.to_datetime('2017-01-01T00:00:00.000000000')
54 µs ± 560 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

【讨论】:

有没有办法使用strptime?我在 lambda 函数中调用日期,它以一种奇怪的格式返回给我。当我尝试执行时 apply(lambda x: pd.to_datetime(x['date']) 它给了我错误 ValueError: ('Unknown string format', 'occured at index 0') 你能在函数中打印它的值吗?

以上是关于如何格式化熊猫日期时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫中保持日期格式相同? [复制]

如何在熊猫中格式化日期格式

如何将日期时间格式转换为分钟 - 熊猫

如何按英文日期格式而不是美国熊猫 .sort() 排序

熊猫日期时间格式删除时区[重复]

熊猫用字符串转换日期