pd.to_datetime翻了一天/几个月我的日期的一半

时间:2018-02-19 16:38:53

标签: python pandas datetime

我的数据集中包含欧洲格式的日期,在将其传递给pd.to_datetime之前,我很难将其转换为正确的格式,因此对于整天来说< 12,我的月和日切换。 有一个简单的解决方案吗?

import pandas as pd
import datetime as dt
df = pd.read_csv(loc,dayfirst=True)
df['Date']=pd.to_datetime(df['Date'])

有没有办法强制日期时间确认输入的格式为dd / mm / yy?

感谢您的帮助!

编辑,我日期的样本:

renewal["Date"].head()
Out[235]: 
0    31/03/2018
2    30/04/2018
3    28/02/2018
4    30/04/2018
5    31/03/2018
Name: Earliest renewal date, dtype: object

运行以下内容后:

renewal['Date']=pd.to_datetime(renewal['Date'],dayfirst=True)

我明白了:

Out[241]: 
0    2018-03-31  #Correct
2    2018-04-01   #<-- this number is wrong and should be 01-04 instad
3    2018-02-28   #Correct

2 个答案:

答案 0 :(得分:2)

添加format

df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y') 

答案 1 :(得分:0)

如果为“年”,“月”和“月份”定义单独的列,则可以直接控制日期构造。和&#39; day&#39;,像这样:

import pandas as pd
df = pd.DataFrame(
    {'Date': ['01/03/2018', '06/08/2018', '31/03/2018', '30/04/2018']}
)
date_parts = df['Date'].apply(lambda d: pd.Series(int(n) for n in d.split('/')))
date_parts.columns = ['day', 'month', 'year']
df['Date'] = pd.to_datetime(date_parts)

date_parts
#    day  month  year
# 0    1      3  2018
# 1    6      8  2018
# 2   31      3  2018
# 3   30      4  2018

df
#         Date
# 0 2018-03-01
# 1 2018-08-06
# 2 2018-03-31
# 3 2018-04-30