gpt4 book ai didi

python - 替换 Pandas 中输入错误的日期

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

我有一个 CSV 数据集,然后将其导入 Pandas。只有少数日期输入错误,例如17/12/0089(注意这是 dd/mm/yyyy)或者有时是 12/11/1898 这不可能是正确的,因为这个日期太久远了。

我需要比较日期,所以我使用了:

    df_to_add['DOB'] = pd.to_datetime(df_to_add['DOB'], dayfirst=True)

但是当遇到其中一些不正确的日期时,我会收到消息pandas.tslib.OutOfBoundsDatetime:越界纳秒时间戳:964-11-16 00:00:00

如何将所有错误输入的日期替换为 NaT 或空白?

最佳答案

to_datetime中添加参数errors='coerce'将错误值转换为 NaT:

df_to_add['DOB'] = pd.to_datetime(df_to_add['DOB'], dayfirst=True, errors='coerce')

示例:

df_to_add = pd.DataFrame({'DOB':['12/11/1898','17/12/0089','05/12/2016']})
print (df_to_add)
DOB
0 12/11/1898
1 17/12/0089
2 05/12/2016

df_to_add['DOB'] = pd.to_datetime(df_to_add['DOB'], dayfirst=True, errors='coerce')
print (df_to_add)
DOB
0 1898-11-12
1 NaT
2 2016-12-05

如果需要通过某个阈值转换为 NaT,请使用 mask如果条件 True 默认返回 NaT:

year = 1900
df_to_add['DOB'] = pd.to_datetime(df_to_add['DOB'], dayfirst=True, errors='coerce')
df_to_add['DOB'] = df_to_add['DOB'].mask(df_to_add['DOB'].dt.year < year)
print (df_to_add)
DOB
0 NaT
1 NaT
2 2016-12-05

关于python - 替换 Pandas 中输入错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41100662/

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