pandas数据框:按两列分组,然后对另一列取平均值

发布于 2021-01-29 18:14:52

假设我有一个具有以下值的数据框:

df:
col1    col2    value
1       2       3
1       2       1
2       3       1

我想首先根据前两列(col1和col2)对数据框进行分组,然后对第三列的值(值)进行平均。因此,所需的输出将如下所示:

col1    col2    avg-value
1       2       2
2       3       1

我正在使用以下代码:

columns = ['col1','col2','avg']
df = pd.DataFrame(columns=columns)
df.loc[0] = [1,2,3]
df.loc[1] = [1,3,3]
print(df[['col1','col2','avg']].groupby('col1','col2').mean())

出现以下错误:

ValueError: No axis named col2 for object type <class 'pandas.core.frame.DataFrame'>

任何帮助将非常感激。

关注者
0
被浏览
295
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您需要将列的列表传递给groupby,您传递的内容被解释为axisparam,这就是它引发错误的原因:

    In [30]:
    columns = ['col1','col2','avg']
    df = pd.DataFrame(columns=columns)
    df.loc[0] = [1,2,3]
    df.loc[1] = [1,3,3]
    
    print(df[['col1','col2','avg']].groupby(['col1','col2']).mean())
               avg
    col1 col2     
    1    2       3
         3       3
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看