将列转换为日期格式(熊猫数据框)

我有一个熊猫数据框如下:

Symbol  Date
A       02/20/2015
A       01/15/2016
A       08/21/2015

我想用 Date对它排序,但是这个列只是 object

我尝试将该列作为日期对象,但是遇到了一个问题,即该格式不是所需的格式。需要的格式是 2015-02-20,等。

So now I'm trying to figure out how to have numpy convert the 'American' dates into the ISO standard, so that I can make them date objects, so that I can sort by them.

我该如何将这些美国日期转换成 ISO 标准,还是有一个更直接的方法,我在熊猫中缺少?

387798 次浏览

可以使用 pd.to_datetime()转换为日期时间对象。它带有一个格式参数,但在您的情况下,我认为您不需要它。

>>> import pandas as pd
>>> df = pd.DataFrame( {'Symbol':['A','A','A'] ,
'Date':['02/20/2015','01/15/2016','08/21/2015']})
>>> df
Date Symbol
0  02/20/2015      A
1  01/15/2016      A
2  08/21/2015      A
>>> df['Date'] =pd.to_datetime(df.Date)
>>> df.sort('Date') # This now sorts in date order
Date Symbol
0 2015-02-20      A
2 2015-08-21      A
1 2016-01-15      A

对于将来的搜索,您可以更改 sort 语句:

>>> df.sort_values(by='Date') # This now sorts in date order
Date Symbol
0 2015-02-20      A
2 2015-08-21      A
1 2016-01-15      A

sort方法已被 不赞成和取代的 sort_values。转换后的日期时间对象使用 df['Date']=pd.to_datetime(df['Date'])

df.sort_values(by=['Date'])

注意: 按降序(最近的第一个)对 就位和/或进行排序:

df.sort_values(by=['Date'], inplace=True, ascending=False)

包含日期列的数据可以使用以下代码读取:

data = pd.csv(file_path,parse_dates=[date_column])

一旦使用上述代码行读取数据,就可以使用 pd.date_time()访问包含日期信息的列,如:

pd.date_time(data[date_column], format = '%d/%m/%y')

按要求更改日期格式。

自从 pandas >= 1.0.0以来,我们在 DataFrame.sort_values 中就有了 key参数。这样我们就可以通过指定一个键对数据框进行排序,而不必调整原始数据框:

df.sort_values(by="Date", key=pd.to_datetime)
  Symbol        Date
0      A  02/20/2015
2      A  08/21/2015
1      A  01/15/2016
data['Date'] = data['Date'].apply(pd.to_datetime) # non-null datetime64[ns]