Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算熊猫中另一列上分组的平均值_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何计算熊猫中另一列上分组的平均值

Python 如何计算熊猫中另一列上分组的平均值,python,pandas,dataframe,Python,Pandas,Dataframe,对于以下数据帧: StationID HoursAhead BiasTemp SS0279 0 10 SS0279 1 20 KEOPS 0 0 KEOPS 1 5 BB 0 5 BB 1 5 我想买一些像这样的东西: StationID

对于以下数据帧:

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
但我想知道熊猫身上是否有更直接的东西。

这就是为什么:

在这里,我们按“StationID”列分组,然后访问“BiasTemp”列并在其上调用
mean


中有一个关于此功能的部分。

您可以在
StationID
上选择
groupby
,然后在
BiasTemp
上选择
mean()。要输出
数据帧
,请使用
作为_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
,它将返回一个
系列

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

阅读此pydata中有关groupby的更多信息。

可按如下方式完成:

df.groupby('StationID').mean()

这与执行诸如
.transform(numpy.mean)
.apply(numpy.mean)
之类的操作有多大不同?
df.groupby('StationID').mean()