如何将具有不同日期格式的 Pandas 列从对象转换为日期时间类型?

时间:2021-05-18 21:19:07

标签: python pandas dataframe date datetime

我有一个来自 Pandas 的 DataFrame:

import pandas as pd
inp = [{'date':'31/03/2021 11:50:12 PM', 'value':100}, 
{'date':'1/4/2021 0:53','value':110}, 
{'date':'2/04/2021 9:40:12 AM', 'value':200}]
df = pd.DataFrame(inp)
print(f'{df}\n')
print(df.dtypes)

输出:

                       date  value
0  '31/03/2021 11:50:12 PM'    100
1           '1/4/2021 0:53'    110
2    '2/04/2021 9:40:12 AM'    100

date     object
value     int64
dtype: object

现在我想将“日期”列从对象转换为日期时间类型,以便输出如下:

                 date  value
0 2021-03-31 23:50:12    100
1 2021-04-01 00:53:00    110
2 2021-04-02 09:40:12    100

date     datetime64[ns]
value             int64
dtype: object

我已尝试运行此代码:

df['date'] = pd.to_datetime(df['date'])
print(f'{df}\n')
print(df.dtypes)

但输出如下:

                 date  value
0 2021-03-31 23:50:12    100
1 2021-01-04 00:53:00    110
2 2021-02-04 09:40:12    100

date     datetime64[ns]
value             int64
dtype: object

如您所见,panda to_datetime 函数将 dd/mm/yyyy hh:mm 格式的列值中的第一个数字误认为是月份。我想知道如何将列转换为 datetype 格式,同时还要考虑月和日数字的不同位置。

1 个答案:

答案 0 :(得分:0)

嗨,用这个代码试试吧。

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d%H%M%S')