当年份数据不一致时如何将str更改为日期?
How to change str to date when year data inconsistent?
我有一个dataframe,列名为birthdates,它们都是字符串,大部分保存为%d.%m.%Y,一些保存为%d.%m.%y.
我怎样才能使这个工作?
df["birthdates_clean"] = pd.to_datetime(df["birthdates"], format = "%d.%m.%Y")
如果这行不通,我需要过滤行吗?我该怎么做?
感谢您抽空回答!
我不确定预期的输出是什么,但您可以让 to_datetime
自动解析日期:
df = pd.DataFrame({"birthdates": ['01.01.2000', '01.02.00', '02.03.99',
'02.03.22', '01.01.71', '01.01.72']})
# as datetime
df["birthdates_clean"] = pd.to_datetime(df["birthdates"], dayfirst=True)
# as custom string
df["birthdates_clean2"] = (pd.to_datetime(df["birthdates"], dayfirst=True)
.dt.strftime('%d.%m.%Y')
)
注意。转变点目前为 71/72。 71 被评估为 2071,72 被评估为 1972
输出:
birthdates birthdates_clean birthdates_clean2
0 01.01.2000 2000-01-01 01.01.2000
1 01.02.00 2000-02-01 01.02.2000
2 02.03.99 1999-03-02 02.03.1999
3 02.03.22 2022-03-02 02.03.2022
4 01.01.71 2071-01-01 01.01.2071
5 01.01.72 1972-01-01 01.01.1972
我有一个dataframe,列名为birthdates,它们都是字符串,大部分保存为%d.%m.%Y,一些保存为%d.%m.%y.
我怎样才能使这个工作?
df["birthdates_clean"] = pd.to_datetime(df["birthdates"], format = "%d.%m.%Y")
如果这行不通,我需要过滤行吗?我该怎么做?
感谢您抽空回答!
我不确定预期的输出是什么,但您可以让 to_datetime
自动解析日期:
df = pd.DataFrame({"birthdates": ['01.01.2000', '01.02.00', '02.03.99',
'02.03.22', '01.01.71', '01.01.72']})
# as datetime
df["birthdates_clean"] = pd.to_datetime(df["birthdates"], dayfirst=True)
# as custom string
df["birthdates_clean2"] = (pd.to_datetime(df["birthdates"], dayfirst=True)
.dt.strftime('%d.%m.%Y')
)
注意。转变点目前为 71/72。 71 被评估为 2071,72 被评估为 1972
输出:
birthdates birthdates_clean birthdates_clean2
0 01.01.2000 2000-01-01 01.01.2000
1 01.02.00 2000-02-01 01.02.2000
2 02.03.99 1999-03-02 02.03.1999
3 02.03.22 2022-03-02 02.03.2022
4 01.01.71 2071-01-01 01.01.2071
5 01.01.72 1972-01-01 01.01.1972