gpt4 book ai didi

python - 如何计算在 Pandas 的另一列上分组的平均值

转载 作者:IT老高 更新时间:2023-10-28 21:55:04 25 4
gpt4 key购买 nike

对于以下数据框:

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

但我想知道 pandas 中是否有更直接的东西。

最佳答案

您可以在 StationIDgroupby,然后在 BiasTemp 上采用 mean()。要输出 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,它会返回一个 Series 来代替

In [5]: df.groupby('StationID')['BiasTemp'].mean()
Out[5]:
StationID
BB 5.0
KEOPS 2.5
SS0279 15.0
Name: BiasTemp, dtype: float64

在此 pydata tutorial 中了解有关 groupby 的更多信息.

关于python - 如何计算在 Pandas 的另一列上分组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com