即使列包含字符串,如何转换为datetime

2024-04-28 03:19:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,其中列date作为dtype对象

id           date         name
1           1/1/2020       A
2           2/1/2020       B
3           2/1/2020    
Total      3 Entries      2 Entries 

我想将此日期列转换为pd.datetime。但由于它包含一个总数,因此会给出一个错误:dateutil.parser._parser.ParserError: Unknown string format: 3 Entries

如何告诉pandas仅更改日期格式?行应更改为datetime?事实上,我只想要从那个日期到新专栏的月份。 我的替代方案是什么

预期结果:

id           date         name          month
1           1/1/2020       A              1
2           2/1/2020       B              1
3           2/1/2020                      1
Total      3 Entries      2 Entries     Nan/0


Tags: 数据对象nameidparserdatetimedate错误
2条回答
for d in df['date']:
    try:
        pd.to_datetime(d)

或者,您可以使用.apply():

convert_to_datetime = lambda d: pd.to_datetime(d).month

df['date'].apply(convert_to_datetime)

月份将是float类型,因此您可能需要将其转换为int

试试这个,to_datetimeerrors=coerce将解析无效的日期&;设置为NaT

df['month'] = pd.to_datetime(df['date'], format="%d/%m/%Y", errors='coerce').dt.month

print(df['month'])

产出

      id       date       name  month
0      1   1/1/2020          A    1.0
1      2   2/1/2020          B    1.0
2      3   2/1/2020       None    1.0
3  Total  3 Entries  2 Entries    NaN

相关问题 更多 >