적용 대 변환을 사용하여 두 열을 빼고 평균 구하기
다음 데이터 프레임을 고려하세요.
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8), 'D': np.random.randn(8)}) A B C D
0 foo one 0.162003 0.087469
1 bar one -1.156319 -1.526272
2 foo 0.833892 -1.666304
3바 3 -2.026673 -0.322057
4 푸 2 0.411452 -0.954371
5 바 2 0.765878 -0.095968
6 푸 1 -0.654890 0.678091
7 foo three -1.789842 -1.130922
apply vs. 변환
다음 명령은 각각에 람다 함수를 적용합니다. 에 있는 그룹 dataframe:
df.groupby('A').apply(lambda x: (x['C'] - x['D']))
이는 원본 데이터프레임과 동일한 모양의 데이터프레임을 반환하며, 각 셀에는 해당 그룹에 적용된 람다 함수의 결과가 포함됩니다.
다음 명령은 다음을 변환합니다. 데이터 프레임의 각 그룹:
df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())
이것은 원래 데이터 프레임과 동일한 모양의 계열을 반환하며, 각 셀에는 차이의 평균이 포함됩니다. 해당 그룹의 C 열과 D 열 사이에 있습니다.
다른 명령이 작동하는 이유
적용 방법과 변환 방법은 서로 다른 입력 개체에 작동하기 때문에 동작이 다릅니다.
이러한 입력 차이는 Apply를 사용하여 전체 그룹에 대한 계산을 수행할 수 있음을 의미합니다. , 변환은 개별 열에 대한 계산을 수행하는 데에만 사용할 수 있습니다.
다음을 사용하여 단일 값 반환 변환
Transform에 전달된 람다 함수는 각 그룹에 대해 단일 값을 반환해야 한다는 점에 유의하는 것이 중요합니다. 람다 함수가 DataFrame, Series 또는 기타 스칼라 값이 아닌 값을 반환하면 오류가 발생합니다.
이것이 다음 명령이 실패하는 이유입니다.
df.groupby('A').transform(lambda x: (x['C'] - x['D']))
람다 함수는 단일이 아닌 DataFrame을 반환합니다. value.
결론
적용과 변환은 데이터 프레임에서 그룹별 작업을 수행하는 데 사용할 수 있는 두 가지 강력한 방법입니다. 두 가지 방법을 효과적으로 사용하려면 차이점을 이해하는 것이 중요합니다.
위 내용은 Pandas DataFrame에서 두 열을 빼고 평균을 계산할 때 '적용'과 '변환'은 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!