如何解决在 pd
我正在使用 p,day,month
读取 csv 文件,并将其放入 df
。目标是从日、月、当前年创建一个日期,我在 2 月 29 日遇到了这个错误:
ValueError: cannot assemble the datetimes: day is out of range for month
我希望在发生此错误时,将前一天替换为前一天。我们怎么做?下面是我的 pd 的几行,最后的 datex
是我想要的
p day month year datex
0 p1 29 02 2021 28Feb-2021
1 p2 18 07 2021 18Jul-2021
2 p3 12 09 2021 12Sep-2021
现在,我的日期代码只有下面,所以我有 nan 日期不存在。
df['datex'] = pd.to_datetime(df[['year','month','day']],errors='coerce')
解决方法
你可以试试这样的:
df['datex'] = pd.to_datetime(df[['year','month','day']],errors='coerce')
确实,你得到了 NA :
p day year month datex
0 p1 29 2021 2 NaT
1 p2 18 2021 7 2021-07-18
2 p3 12 2021 9 2021-09-12
然后你可以为这些 NA 做一个特殊的案例:
df.loc[df.datex.isnull(),'previous_day'] = df.day -1
p day year month datex previous_day
0 p1 29 2021 2 NaT 28.0
1 p2 18 2021 7 2021-07-18 NaN
2 p3 12 2021 9 2021-09-12 NaN
df.loc[df.datex.isnull(),'datex'] = pd.to_datetime(df[['previous_day','year','month']].rename(columns={'previous_day': 'day'}))
p day year month datex previous_day
0 p1 29 2021 2 2021-02-28 28.0
1 p2 18 2021 7 2021-07-18 NaN
2 p3 12 2021 9 2021-09-12 NaN
如果您想在 day 列中保留 day = 29,则必须创建一个新的 day 列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。