我在一个pandas dataframe中有一个名为“date”的列名,这是前10行:
0 22-Oct-2022
1 3-Dec-2019
2 27-Jun-2022
3 2023
4 15-Jul-2017
5 2019
6 7-Sep-2022
7 2021
8 30-Sep-2022
9 17-Aug-2021
我想将所有这些日期转换为例如:
0 2023-05-19
1 2023-01-20
2 ...
对于那些只有我想设置为YEAR的行,例如,如果原始df有:
0 2019
1 2021
到
5 2019-01-01
7 2021-01-01
换句话说,我的意思是,我想为这种情况设置今年的第一个日期,但保留原来的一年,而不是今年。
我试过:
df['date'] = pd.to_datetime(df['date'], errors='coerce', format='%d-%b-%Y')
但是它生成NaT值。我希望你能理解这种情况下的家伙,我会很感激任何想法来解决这个问题
谢谢。
2条答案
按热度按时间8aqjt8rx1#
调用
to_datetime
时,可以将 format 设置为mixed
(2.0.0
中的新增内容,参见GH50972):format
:str,default None“mixed”,单独推断每个元素的格式。这是有风险的,你应该和dayfirst沿着使用。
或者一个经典的double date-parsing +
fillna
:输出:
rkue9o1l2#
您必须手动更新这些值,首先可以标准化只有年份的行,如下所示:
然后尝试对结果使用
to_datetime
函数