나는 서비스에 대한 사용자 가입을 포함하는 테이블이 있습니다.파이썬 팬더 그룹에 의해 카운트의 시계열을 구축
사용자 상태가 변경되면 동일한 user_id, 새로운 업데이트 시간 및 새로운 상태로 테이블에 새로운 행이 삽입됩니다.
예 테이블 :
example = {'updated_at':['2017-01-01', '2017-01-01', '2017-01-02','2017-01-02', '2017-01-03','2017-01-03','2017-01-03','2017-01-04','2017-01-04'],
'user_id': [9, 10, 11, 12, 13, 12, 14, 11, 10],
'status': ['trial', 'cancelled', 'trial', 'trial', 'trial', 'active', 'active', 'active', 'active']}
example_data = pd.DataFrame.from_dict(example)
내가 구축을 위해 노력하고있어 매일의 상태로 그룹화 사용자의 수를 표시하는 테이블입니다. 하루가 지나도 바뀌지 않으면 테이블에 같은 날의 데이터가 표시됩니다.
사용자 중 한 명이 상태를 업데이트 한 다음 그 다음 날부터는 새로운 상태 분류가 반영되어야합니다.
예 원하는 결과는 :
print desired_results
date n status
0 2017-01-01 0 active
1 2017-01-01 1 cancelled
2 2017-01-01 1 trial
3 2017-01-02 0 active
4 2017-01-02 1 cancelled
5 2017-01-02 3 trial
6 2017-01-03 2 active
7 2017-01-03 1 cancelled
8 2017-01-03 4 trial
9 2017-01-04 4 active
10 2017-01-04 0 cancelled
11 2017-01-04 2 trial
지금까지 시도하는 것 :
(example_data.
groupby(['updated_at','status']). #group by date and status
count(). # count in each group
unstack(fill_value = 0). # unstack
cumsum(). # cumsum for each status
stack(). # stack all together again
reset_index().rename(columns={'user_id': 'n'})) # rename column and reindex
그러나 이것은 내가 기대하고 있었는지 저를 포기하지 않습니다. 문제는 새 레코드로 업데이트를 계산하므로 사용자가 두 번 계산된다는 것입니다.
아무도 도와 드릴 수 있습니까?
당신은 당신의 대답을 받아 들여야합니다;) – Dionys
다른 사람들이 깨끗한 해결책으로 대답하지 않는 한, 나는 허락하자마자 내 대답을 받아 들일 것입니다. :) –