다음과 같이 팬더 데이터 프레임이 있습니다.
Symbol Date
A 02/20/2015
A 01/15/2016
A 08/21/2015
나는 그것을 기준으로 정렬하고 Date
싶지만 열은 단지 object
.
열을 날짜 개체로 만들려고했지만 해당 형식이 필요한 형식이 아닌 문제가 발생했습니다. 필요한 형식은 2015-02-20,
등 입니다 .
이제 저는 numpy가 ‘미국식’날짜를 ISO 표준으로 변환하여 날짜 개체를 만들어 정렬 할 수 있도록하는 방법을 알아 내려고합니다.
이 미국 날짜를 ISO 표준으로 어떻게 변환합니까? 아니면 pandas에서 빠진 더 간단한 방법이 있습니까?
답변
를 사용 pd.to_datetime()
하여 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
향후 검색을 위해 정렬 문을 변경할 수 있습니다.
>>> 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
. 다음을 사용하여 datetime 객체로 변환 한 후df['Date']=pd.to_datetime(df['Date'])
df.sort_values(by=['Date'])
참고 : 내부 및 / 또는 내림차순 (가장 최근 순서) 으로 정렬하려면 :
df.sort_values(by=['Date'], inplace=True, ascending=False)
답변
@JAB의 대답 은 빠르고 간결합니다. 그러나 그것은 DataFrame
당신이 원할 수도 있고 원하지 않을 수도있는 정렬하려는 것을 변경합니다 .
( 참고 : 날짜 열은 문자열이 아닌 날짜 여야하기 때문에 거의 확실 하게 원할 것 입니다 !)
날짜를 날짜로 변경하고 싶지 않은 경우에는 다른 방법으로 수행 할 수도 있습니다.
먼저 정렬 된 Date
열 에서 색인을 가져옵니다 .
In [25]: pd.to_datetime(df.Date).order().index
Out[25]: Int64Index([0, 2, 1], dtype='int64')
그런 다음 원본을 색인화하는 데 사용하고 DataFrame
그대로 둡니다.
In [26]: df.ix[pd.to_datetime(df.Date).order().index]
Out[26]:
Date Symbol
0 2015-02-20 A
2 2015-08-21 A
1 2016-01-15 A
마법!
참고 : Pandas 버전 0.20.0 이상의 경우 이제 더 이상 사용되지 않는 loc
대신을 사용 ix
하세요.
답변
날짜 열이 포함 된 데이터는 아래 코드를 사용하여 읽을 수 있습니다.
data = pd.csv(file_path,parse_dates=[date_column])
위의 코드 줄을 사용하여 데이터를 읽으면 다음과 같이 날짜에 대한 정보가 포함 된 열에 액세스 할 수 있습니다 pd.date_time()
.
pd.date_time(data[date_column], format = '%d/%m/%y')
요구 사항에 따라 날짜 형식을 변경합니다.