我的数据集中包含欧洲格式的日期,在将其传递给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
答案 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