我的数据框格式为“ dd / mm / yyyy%H:%M”。
Date Price
29/10/2018 19:30 163.09
29/10/2018 20:00 211.95
29/10/2018 20:30 205.86
29/10/2018 21:00 201.39
29/10/2018 21:30 126.68
29/10/2018 22:00 112.36
29/10/2018 22:30 120.94
我希望此数据框的格式为“ yyyy / mm / dd%H:%M”,如下所示。
Date Price
2018/29/10 19:30 163.09
2018/29/10 20:00 211.95
2018/29/10 20:30 205.86
2018/29/10 21:00 201.39
2018/29/10 21:30 126.68
2018/29/10 22:00 112.36
2018/29/10 22:30 120.94
我尝试过
df['Date'] = pd.to_datetime(df['Date])
,但它给出以下结果,这不是我想要的
Date Price
2018-29-10 19:30:00 163.09
2018-29-10 20:00:00 211.95
2018-29-10 20:30:00 205.86
2018-29-10 21:00:00 201.39
答案 0 :(得分:3)
使用strftime
将日期时间转换为字符串格式:
df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y/%m/%d %H:%M')
print (df)
Date Price
0 2018/10/29 19:30 163.09
1 2018/10/29 20:00 211.95
2 2018/10/29 20:30 205.86
3 2018/10/29 21:00 201.39
4 2018/10/29 21:30 126.68
5 2018/10/29 22:00 112.36
6 2018/10/29 22:30 120.94
print (type(df.loc[0, 'Date']))
<class 'str'>
print (df['Date'].dtype)
object
因此,如果要使用类似datetimes的函数,请仅使用to_datetime
,格式为YYYY-MM-DD HH:MM:SS
:
df['Date'] = pd.to_datetime(df['Date'])
print (df)
Date Price
0 2018-10-29 19:30:00 163.09
1 2018-10-29 20:00:00 211.95
2 2018-10-29 20:30:00 205.86
3 2018-10-29 21:00:00 201.39
4 2018-10-29 21:30:00 126.68
5 2018-10-29 22:00:00 112.36
6 2018-10-29 22:30:00 120.94
print (type(df.loc[0, 'Date']))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
print (df['Date'].dtype)
datetime64[ns]
答案 1 :(得分:2)
datetime
存储为整数您说it gives result as following
时,只会看到这些基础整数的字符串表示形式。您不应将其误解为Pandas如何存储您的数据,或者实际上是将数据导出为另一种格式时将如何表示数据。
object
dtype 您可以使用pd.Series.dt.strftime
将系列转换为一系列字符串。这将具有object
dtype,它表示一系列指针:
df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y/%m/%d %H:%M')
您将失去所有的矢量化好处,因此您应力争仅在必要时并尽可能晚地执行此操作。