如何解决pandas数据框:按两列分组,然后对另一列取平均值
您需要将列的列表传递给groupby,您传递的内容被解释为axis
param,这就是它引发错误的原因:
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
解决方法
假设我有一个具有以下值的数据框:
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','avg']].groupby('col1','col2').mean())
出现以下错误:
ValueError: No axis named col2 for object type <class 'pandas.core.frame.DataFrame'>
任何帮助将非常感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。