首页 > 解决方案 > 熊猫数据框排序日期

问题描述

我在http://sprunge.us/Pv338j有一个 csv 文件。我用它创建了一个数据框。其中有一个日期列。如果我尝试对此日期列进行排序,则该列未排序。这是我的代码:

import pandas as pd

df = pd.read_csv(outputcsv)
df['Date'] = pd.to_datetime(df.Date)

df.Date

0     2020-11-11
1     2020-12-11
2     2020-11-13
3     2020-11-14
4     2020-11-15
   
274   2021-12-08
275   2021-08-13
276   2021-08-14
277   2021-08-15
278   2021-08-16
Name: Date, Length: 279, dtype: datetime64[ns]

df.sort_values(by='Date', inplace=True)

df.Date
20    2020-01-12
21    2020-02-12
22    2020-03-12
23    2020-04-12
24    2020-05-12
   
152   2021-12-04
182   2021-12-05
213   2021-12-06
243   2021-12-07
274   2021-12-08
Name: Date, Length: 279, dtype: datetime64[ns]

标签: python-3.xpandasdataframesortingdatetime

解决方案


你可以试试这个:

df['Date2'] = [(d - datetime.datetime(1970,1,1)).total_seconds() for d in df['Date']]
                            
df['year'] = [datetime.datetime.fromtimestamp(d).year for d in df['Date2']]
df['month'] = [datetime.datetime.fromtimestamp(d).month for d in df['Date2']]
df['day'] = [datetime.datetime.fromtimestamp(d).day for d in df['Date2']]


df.sort_values(['year', 'month', 'day'], ascending=[True, True, True])

df['Date']

推荐阅读