我有4个名为df1
,df2
,df3
,df4
的数据框,其中一列Date
。该列由具有不同格式的日期组成。 df1
具有int64类型的日期列,df2
具有对象类型的日期列,df3
具有日期列具有类型对象,df4
具有对象类型的日期列。以下是数据框及其数据。
df1:
Date
0 20160301
1 20160301
2 20160301
3 20160301
df2:
Date
0 01/03/2016
1 01/03/2016
2 01/03/2016
df3:
Date
0 31-Mar-16
1 31-Mar-16
2 31-Mar-16
df4:
Date
0 25/02/2016
1 25/02/2016
2 25/02/2016
我想将表格中的这些日期转换为mm/dd/yyyy
类型的date
。谁可以帮我这个事?
答案 0 :(得分:2)
我认为您可以使用to_datetime
和dt.strftime
,但type
不是datetime
,而是string
:
df1['Date'] = pd.to_datetime(df1['Date'], format='%Y%m%d').dt.strftime('%m/%d/%Y')
df2['Date'] = pd.to_datetime(df2['Date']).dt.strftime('%m/%d/%Y')
df3['Date'] = pd.to_datetime(df3['Date']).dt.strftime('%m/%d/%Y')
df4['Date'] = pd.to_datetime(df4['Date']).dt.strftime('%m/%d/%Y')
print df1
print df2
print df3
print df4
Date
0 03/01/2016
1 03/01/2016
2 03/01/2016
3 03/01/2016
Date
0 01/03/2016
1 01/03/2016
2 01/03/2016
Date
0 03/31/2016
1 03/31/2016
2 03/31/2016
Date
0 02/25/2016
1 02/25/2016
2 02/25/2016
print type(df1.at[0,'Date'])
<type 'str'>
如果您需要datetime
,格式为YY-MM-DD
:
df1['Date'] = pd.to_datetime(df1['Date'], format='%Y%m%d')
df2['Date'] = pd.to_datetime(df2['Date'])
df3['Date'] = pd.to_datetime(df3['Date'])
df4['Date'] = pd.to_datetime(df4['Date'])
print df1
print df2
print df3
print df4
Date
0 2016-03-01
1 2016-03-01
2 2016-03-01
3 2016-03-01
Date
0 2016-01-03
1 2016-01-03
2 2016-01-03
Date
0 2016-03-31
1 2016-03-31
2 2016-03-31
Date
0 2016-02-25
1 2016-02-25
2 2016-02-25
print type(df1.at[0,'Date'])
<class 'pandas.tslib.Timestamp'>
有关格式化datetime
的更多信息,请here。