当前位置: 首页 > 面试题库 >

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

向弘懿
2023-03-14
问题内容

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

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'>

任何帮助将非常感激。


问题答案:

您需要将列的列表传递给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


 类似资料:
  • 问题内容: 我有一个这样的数据框: 我想计算每个集群每个组织的平均时间。 预期结果: 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 问题答案: 如果你想先对组合取平均值,然后再对cluster组取平均值 如果你不仅仅希望价值观,那么你可以 你可以groupby上再取

  • 我有一个熊猫数据框,格式如下: df: 现在我想将其分为两列,如下所示: 输出: 我想得到每一行的计数,如下所示。预期产出: 如何获得我的预期输出?我想找出每个“col2”值的最大计数?

  • 问题内容: 我有一个数据框,我想将一个函数应用于每2列(或3列,它是变量)。 例如,下面的示例,我想将均值函数应用于0-1、2-3、4-5,.... 28-29列 问题答案: 也可以使用,并且可以接受一系列的组标签。如果您的列在您的示例中那样是方便的范围,那么这很简单: (这是因为给出了。) 即使我们不是很幸运,我们仍然可以自己建立适当的小组:

  • 问题内容: 这应该很容易,但是以某种方式我找不到有效的解决方案。 我有一个熊猫数据框,看起来像这样: 我想按col1和col2分组并获得col3和col4。 由于无法汇总数据,因此可以删除。 这是输出的样子。我很感兴趣,同时具有和中产生的数据帧。是否和是否属于索引并不重要。 这是我尝试过的: 但是,这只会返回的汇总结果。 我在这里迷路了。我发现的每个示例仅汇总一列,显然不会发生此问题。 问题答案:

  • 问题内容: 我想在中设置多列的(我有一个文件,我不得不手动将其解析为列表列表,因为该文件不适合) 我懂了 我可以设置它们的唯一方法是循环遍历每个列变量并使用重铸。 有没有更好的办法? 问题答案: 从0.17开始,您必须使用显式转换: (如下所述,在0.17中已不再使用“魔术”了) 您可以将它们应用于要转换的每一列: 并确认dtype已更新。 适用于大熊猫0.12-0.16的旧/建议答案:您可以用来

  • 问题内容: 我有点被困在提取另一个变量的条件变量的值上。例如,以下数据框: 如何获得when的价值?每当我提取的值时,我都会得到一个对象,而不是字符串。 问题答案: 您可以用来获取满足条件的序列,然后获取第一个元素: