programing

다른 열에 그룹화된 평균값을 계산하는 방법

topblog 2023. 9. 10. 11:52
반응형

다른 열에 그룹화된 평균값을 계산하는 방법

다음 데이터 프레임의 경우:

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

반응형