반응형
팬더는 groupby로 합계하지만 특정 열은 제외합니다.
Pandas 데이터 프레임에서 groupby를 수행하지만 해당 groupby에서 일부 열을 제외하는 가장 좋은 방법은 무엇입니까? 예를 들어 다음 데이터 프레임이 있습니다.
Code Country Item_Code Item Ele_Code Unit Y1961 Y1962 Y1963
2 Afghanistan 15 Wheat 5312 Ha 10 20 30
2 Afghanistan 25 Maize 5312 Ha 10 20 30
4 Angola 15 Wheat 7312 Ha 30 40 50
4 Angola 25 Maize 7312 Ha 30 40 50
Country 및 Item_Code 열을 그룹화하고 Y1961, Y1962 및 Y1963 열에 속하는 행의 합계 만 계산하고 싶습니다. 결과 데이터 프레임은 다음과 같아야합니다.
Code Country Item_Code Item Ele_Code Unit Y1961 Y1962 Y1963
2 Afghanistan 15 C3 5312 Ha 20 40 60
4 Angola 25 C4 7312 Ha 60 80 100
지금 나는 이것을하고있다 :
df.groupby('Country').sum()
그러나 이렇게하면 Item_Code 열의 값도 더해집니다. sum()
작업 에 포함 할 열과 제외 할 열을 지정할 수있는 방법이 있습니까?
groupby의 열을 선택할 수 있습니다.
In [11]: df.groupby(['Country', 'Item_Code'])[["Y1961", "Y1962", "Y1963"]].sum()
Out[11]:
Y1961 Y1962 Y1963
Country Item_Code
Afghanistan 15 10 20 30
25 10 20 30
Angola 15 30 40 50
25 30 40 50
전달 된 목록은 열의 하위 집합이어야합니다. 그렇지 않으면 KeyError가 표시됩니다.
이 agg
기능은 당신을 위해 이것을 할 것입니다. 열과 함수를 열과 함께 dict로 전달하고 다음을 출력합니다.
df.groupby(['Country', 'Item_Code']).agg({'Y1961': np.sum, 'Y1962': [np.sum, np.mean]}) # Added example for two output columns from a single input column
그러면 그룹 별 열과 지정된 집계 열만 표시됩니다. 이 예에서는 'Y1962'에 적용된 두 개의 agg 함수를 포함했습니다.
보고자하는 것을 정확하게 얻으려면 그룹의 다른 열을 포함하고 프레임의 Y 변수에 합계를 적용합니다.
df.groupby(['Code', 'Country', 'Item_Code', 'Item', 'Ele_Code', 'Unit']).agg({'Y1961': np.sum, 'Y1962': np.sum, 'Y1963': np.sum})
많은 열에 적용하는보다 일반적인 방법을 찾고 있다면 열 이름 목록을 작성하여 그룹화 된 데이터 프레임의 인덱스로 전달하는 것입니다. 귀하의 경우 예를 들면 다음과 같습니다.
columns = ['Y'+str(i) for year in range(1967, 2011)]
df.groupby('Country')[columns].agg('sum')
참고 URL : https://stackoverflow.com/questions/32751229/pandas-sum-by-groupby-but-exclude-certain-columns
반응형
'Programing' 카테고리의 다른 글
IIS8 Win8 및 runAllManagedModulesForAllRequests =“true” (0) | 2020.10.19 |
---|---|
컨트롤러 내에서 $ setValidity 사용 (0) | 2020.10.19 |
console.log가 JavaScript 실행 성능을 저하 시키나요? (0) | 2020.10.19 |
Angular Karma Jasmine 오류 : 잘못된 상태 : 지시문에 대한 요약을로드 할 수 없습니다. (0) | 2020.10.19 |
SVG 캔버스를 로컬 파일 시스템에 저장하는 방법 (0) | 2020.10.19 |