Panda DataFrame将字符串转换为日期,然后排序失败



我有一个带字符串的列,它将转换为datetime(西班牙语日期格式(

>>> df['Date'].head()
0    31/10/2019
1    31/10/2019
2    30/10/2019
3    30/10/2019
4    29/10/2019
Name: Date, dtype: object

转换

>>>pd.to_datetime(df['Date'], dayfirst = True)
>>>df['Date'].head()
0   2019-10-31
1   2019-10-31
2   2019-10-30
3   2019-10-30
4   2019-10-29
Name: Date, dtype: datetime64[ns]

现在我想按日期排序,结果奇怪地转换为:

>>>df['Date'] =df.sort_values(by=['Date'], ascending = True)
>>>df['Date'].head()
0    9443248_19
1    9443205_19
2    9441864_19
3    9441809_19
4    9440310_19
Name: Date, dtype: object

知道这里发生了什么吗?为什么类型会转换回对象?

确保您的"日期"列首先转换为datetime,然后排序应该可以正常工作:

import pandas as pd
df = pd.DataFrame({'Date': ['31/10/2019', '31/10/2019', '30/10/2019', '30/10/2019', '29/10/2019']})
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df.sort_values(by='Date', ascending=True, inplace=True)
# df['Date']
# 4   2019-10-29
# 2   2019-10-30
# 3   2019-10-30
# 0   2019-10-31
# 1   2019-10-31
# Name: Date, dtype: datetime64[ns

最新更新