반응형
user_id 당 월 평균 비용을 찾으려고하는데 사용자 당 평균 비용 또는 사용자 당 월간 비용 만 얻을 수 있습니다.
사용자 및 월별로 그룹화하기 때문에 groupby 출력을 다른 것으로 변환하지 않는 한 두 번째 groupby (월)의 평균을 얻을 수있는 방법이 없습니다.
이것은 내 df입니다.
df = { 'id' : pd.Series([1,1,1,1,2,2,2,2]),
'cost' : pd.Series([10,20,30,40,50,60,70,80]),
'mth': pd.Series([3,3,4,5,3,4,4,5])}
cost id mth
0 10 1 3
1 20 1 3
2 30 1 4
3 40 1 5
4 50 2 3
5 60 2 4
6 70 2 4
7 80 2 5
월별 합계를 얻을 수 있지만 각 user_id의 월 평균을 원합니다.
df.groupby(['id','mth'])['cost'].sum()
id mth
1 3 30
4 30
5 40
2 3 50
4 130
5 80
나는 다음과 같은 것을 원한다.
id average_monthly
1 (30+30+40)/3
2 (50+130+80)/3
해결 방법
색인 재설정이 작동합니다. 이 시도:
In [19]: df.groupby(['id', 'mth']).sum().reset_index().groupby('id').mean()
Out[19]:
mth cost
id
1 4.0 33.333333
2 4.0 86.666667
원하는 경우 개월
을 삭제할 수 있습니다. 논리는 sum
부분 뒤에 다음과 같은 것입니다.
In [20]: df.groupby(['id', 'mth']).sum()
Out[20]:
cost
id mth
1 3 30
4 30
5 40
2 3 50
4 130
5 80
이 시점에서 인덱스를 재설정하면 고유 한 월이 제공됩니다.
In [21]: df.groupby(['id', 'mth']).sum().reset_index()
Out[21]:
id mth cost
0 1 3 30
1 1 4 30
2 1 5 40
3 2 3 50
4 2 4 130
5 2 5 80
이번에는 sum
대신 mean
을 사용하여 다시 그룹화하면됩니다. 이것은 당신에게 평균을 줄 것입니다.
도움이되는지 알려주세요.
참조 페이지 https://stackoverflow.com/questions/40066837
반응형
'파이썬' 카테고리의 다른 글
파이썬에서 좋은 __hash__ 함수를 구현하는 방법 (0) | 2020.10.28 |
---|---|
파이썬 AttributeError : 'str'개체에 'append'속성이 없습니다. (0) | 2020.10.28 |
파이썬 Python에서 동일한 그래프에 목록 목록 그리기 (0) | 2020.10.28 |
파이썬에서 별표 *는 무엇을 의미합니까? (0) | 2020.10.27 |
파이썬 쉼표를 도트 팬더로 대체 (0) | 2020.10.27 |
댓글