2013-11-22 5 views
3

팬더에서 오늘부터 '날짜'열이 경과 한 일수 인 열을 어떻게 만듭니 까? 내 데이터에 중복 된 '파일이 있기 때문에 최대 날짜 만 필요합니다.Pandas Python : 오늘 열 이후에 경과를 만드는 방법은 무엇입니까?

File,Status,Date 
pafpull.sps,1,10-15-13 16:33 
pafpull.sps,1,10-14-13 16:33 
test.sps,1,10-14-13 11:19 

현재 코드 :해야 당신이 두 개의 날짜 시간에 빼기를 수행 할 때 무엇을 얻을 수있는 timedelta 형태로 표현

import pandas as pd 


df = pd.read_csv(file, names=['File','Status','Date']) 
df['Date']=pd.to_datetime(df['Date']) 
xx=df.groupby('File')['Date'].max().order() 

답변

3

경과 시간

여기 내 가상 데이터입니다.

In [43]: datetime.now() - df['Date'] 
Out[43]: 
0 38 days, 00:08:44.917269 
1 39 days, 00:08:44.917269 
2 39 days, 05:22:44.917269 

하루를 반올림하기 위해 몇 가지 농구를 뛰어야합니다.

In [42]: datetime.now().date() - pd.DatetimeIndex(df['Date']).normalize().to_series() 
Out[42]: 
2013-10-15 38 days, 00:00:00 
2013-10-14 39 days, 00:00:00 
2013-10-14 39 days, 00:00:00 
dtype: timedelta64[ns] 

혼란스러운 이유는 ... 긴 이야기입니다. timedeltas에 대한 팬더 지원은 출시 예정인 v0.13에서 다소 향상되지만 갈 길이 멀다.

+0

numpy 1.7; iirc 너는 0.12 안에 np.timedelta64 (1, 'D')로 나눌 수있다 (0.13 안에 너는 astype을 할 수 있는다), http://pandas.pydata.org/pandas-docs/dev/timeseries.html#을 여기에서 보아라. 시간 - 델타 변환 – Jeff

+0

이것은 매우 유용합니다. 감사. –

0

은 내 마지막 목표가 저절로 논리를 수행하는 것이기 때문에 다른 해결책을 제시했습니다.

df['Date']=pd.to_datetime(df['Date']) 
xx=df.groupby('File')['Date'].max().order() 
df=pd.DataFrame(xx).reset_index() 
df['diff'] = df.apply(lambda x: (datetime.now() - x['Date']).days, axis=1) 
관련 문제