반응형
다른 열에 그룹화된 평균값을 계산하는 방법
다음 데이터 프레임의 경우:
StationID HoursAhead BiasTemp
SS0279 0 10
SS0279 1 20
KEOPS 0 0
KEOPS 1 5
BB 0 5
BB 1 5
저는 다음과 같은 것을 사고 싶습니다.
StationID BiasTemp
SS0279 15
KEOPS 2.5
BB 5
원하는 결과를 얻기 위해 이와 같은 스크립트를 작성할 수 있다는 것을 알고 있습니다.
def transform_DF(old_df,col):
list_stations = list(set(old_df['StationID'].values.tolist()))
header = list(old_df.columns.values)
header.remove(col)
header_new = header
new_df = pandas.DataFrame(columns = header_new)
for i,station in enumerate(list_stations):
general_results = old_df[(old_df['StationID'] == station)].describe()
new_row = []
for column in header_new:
if column in ['StationID']:
new_row.append(station)
continue
new_row.append(general_results[column]['mean'])
new_df.loc[i] = new_row
return new_df
하지만 팬더에게 더 간단한 것이 있는지 궁금합니다.
할 수 있습니다.groupby
위에StationID
그리고 가져가세요.mean()
위에BiasTemp
. 출력하기Dataframe
,사용하다as_index=False
In [4]: df.groupby('StationID', as_index=False)['BiasTemp'].mean()
Out[4]:
StationID BiasTemp
0 BB 5.0
1 KEOPS 2.5
2 SS0279 15.0
없이.as_index=False
, 그것은 a를 돌려줍니다.Series
대신
In [5]: df.groupby('StationID')['BiasTemp'].mean()
Out[5]:
StationID
BB 5.0
KEOPS 2.5
SS0279 15.0
Name: BiasTemp, dtype: float64
자세히 보기groupby
이 파이데이터 자습서에서.
이는 다음을 위한 것입니다.
In [117]:
df.groupby('StationID')['BiasTemp'].mean()
Out[117]:
StationID
BB 5.0
KEOPS 2.5
SS0279 15.0
Name: BiasTemp, dtype: float64
여기 우리는 '스테이션'별로 그룹을 짓습니다.'ID' 열을 누르면 'Bias'에 접근할 수 있습니다.Temp' 열과 통화mean
그 위에
문서에는 이 기능에 대한 섹션이 있습니다.
다음과 같이 할 수 있습니다.
df.groupby('StationID').mean()
언급URL : https://stackoverflow.com/questions/30482071/how-to-calculate-mean-values-grouped-on-another-column
반응형
'programing' 카테고리의 다른 글
필터를 고려한 열의 중위수는 어떻게 구합니까? (0) | 2023.09.10 |
---|---|
PySpark의 테이블 데이터 프레임을 csv로 내보내는 방법은 무엇입니까? (0) | 2023.09.10 |
요소가 뷰포트에 보이는지 쿼리 확인 (0) | 2023.09.10 |
nodejs를 사용하여 기본 브라우저를 열고 특정 URL로 이동하는 방법 (0) | 2023.09.10 |
MySQL 테이블을 CSV 파일로 내보내기 (0) | 2023.09.05 |