首页 > 解决方案 > 编写函数以应用于 Pandas GroupBy

问题描述

从这篇文章开始:从熊猫 groupby 对象返回每个组的子集 我正在尝试编写一个函数以应用于熊猫中的 groupby 对象

def group_by_function(df):
    ID = df.loc[df.Parameter_1==0].Parameter_2.idxmin()        
    df_2 = df.iloc[ID].Parameter

    print(ID)
    return df_2

df.groupby(by=['Column1', 'Column2']).apply(group_by_function)

在这种情况下,我对索引的工作方式有点迷茫。在示例中,我返回的 ID 是 1189 - 但是我执行的行 df.iloc[1189] 返回位置指示器超出范围的错误。

我的理解是在 groupby 期间应该保留索引,这是我的 ID= 行告诉我的。但是我不清楚为什么 iloc 调用会引发错误。

我的 groupby 由两列组成 - 不确定这是否是一个因素。

标签: pythonpandas

解决方案


您可以使用loc按标签选择,因为idxmin返回索引,而不是位置:

df_2 = df.loc[ID, 'Parameter']

推荐阅读