gpt4 book ai didi

python - 列中缺少/NaT 值时如何转换日期格式

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:30 25 4
gpt4 key购买 nike

我有几个日期列,我想将它们转换为月/日/年格式。假设测试是日期列之一 - 下面的代码有效。

dfq['test1'] = dfq['test1'].apply(lambda x: x.strftime('%m/%d/%Y'))

但是当列中缺少值作为“NaT”时,它会显示错误ValueError: NaTType 不支持 strftime 。我创建了一个示例数据集,并有意保留一个缺失值作为 ' '。在那种情况下,它也会显示错误。

我想保留缺失值或 NaT 值,因此无法删除它们。还有其他办法吗?

另一个问题,如果我想同时转换我所有的日期列(比如 test1、test、test3),- 有没有办法在使用 lambda/strftime 时做到这一点?

最佳答案

你应该使用 pd.Series.dt.strftime ,优雅地处理 NaT:

import pandas as pd

s = pd.Series(['2018-01-01', 'hello'])

s = pd.to_datetime(s, errors='coerce')

# 0 2018-01-01
# 1 NaT
# dtype: datetime64[ns]

s = s.dt.strftime('%m/%d/%Y')

print(s)

# 0 01/01/2018
# 1 NaT
# dtype: object

对于你的第二个问题,我不相信 datetimestr 的转换可以被向量化。您可以轻松地做到这一点:

for col in ['col1', 'col2', 'col3']:
df[col] = df[col].dt.strftime('%m/%d/%Y')

或者更好:

for col in df.select_dtypes(include=['datetime']):
df[col] = df[col].dt.strftime('%m/%d/%Y')

关于python - 列中缺少/NaT 值时如何转换日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com