2014-04-22 2 views
4

나는 팬더를 처음 사용하고 있으며 데이터를 날짜별로 그룹화하고 각 그룹의 고유 한 값을 계산하여 결합하려고합니다. 각각의 고유 사용자 수를 계산 또한 일 (내가 할 수있는)에 날짜 인덱스를 다시 샘플링 및 :팬더 : 리 샘플링 후 고유 값 계산하기

    User, Type 
Datetime 
2014-04-15 11:00:00, A, New 
2014-04-15 12:00:00, B, Returning 
2014-04-15 13:00:00, C, New 
2014-04-20 14:00:00, D, New 
2014-04-20 15:00:00, B, Returning 
2014-04-20 16:00:00, B, Returning 
2014-04-20 17:00:00, D, Returning 

그리고 여기에 내가 도착하고 싶은 내용은 다음과 같습니다

여기 내 데이터의 모습입니다 일. 아직 '유형'열에 관심이 없습니다.

Day, Unique Users 
2014-04-15, 3 
2014-04-20, 2 

나는 df.user.resample('D', how='count').unique을 시도하고 있지만, 나에게 정답을 제공하지 않는 것 같습니다.

답변

5

질문에 원하는 결과를 얻으려면 리 샘플링을 수행 할 필요가 없습니다. 난 당신이 날짜에 불과 groupby에 의해 얻을 수 있다고 생각 :

print df.groupby(df.index.date)['User'].nunique() 

2014-04-15 3 
2014-04-20 2 
dtype: int64 

을 그리고 당신은 당신이 원하는 경우 고유의 사용자 계산 한 후 다음 시계열 격차를 채우기 위해 다시 샘플링 수 :

cnt = df.groupby(df.index.date)['User'].nunique() 
cnt.index = cnt.index.to_datetime() 
print cnt.resample('D') 

2014-04-15  3 
2014-04-16 NaN 
2014-04-17 NaN 
2014-04-18 NaN 
2014-04-19 NaN 
2014-04-20  2 
Freq: D, dtype: float64 
+0

이'인쇄 df.groupby (df.index.date) '사용자'] 사용에 적용 (람다 X : x.nunique())'하지만, 이것은 효과가 있었다. 감사! –

-1

을 나는 같은 문제를 겪고 있었다. Karl D의 대답은 일종의 재 색인 생성을 위해 작동합니다 (예 : 날짜). 하지만 인덱스를

Jan 2014 
Feb 2014 
March 2014 

으로 만들고 싶다면 어떻게해야합니까? 여기

내가 무슨 짓을했는지 :. 내가 가진

df.user.resample('M',lambda x: x.nunique()) 
관련 문제