如何将格式为“ dd / mm / yyyy%H:%M”的熊猫数据框日期列转换为“ yyyy / mm / dd%H:%M”

时间:2018-10-30 10:32:40

标签: python python-3.x pandas datetime

我的数据框格式为“ 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

2 个答案:

答案 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')

您将失去所有的矢量化好处,因此您应力争仅在必要时并尽可能晚地执行此操作。