熊猫:使用GROUPBY获得意味着每个数据类别熊猫:使用GROUPBY获得意味着每个数据类别(Pan

2019-05-12 12:18发布

我有一个数据帧,看起来像这样:

>>> df[['data','category']]
Out[47]: 
          data     category
  0       4610            2
 15       4610            2
 22       5307            7
 23       5307            7
 25       5307            7
...        ...          ...

数据和类别是数字,所以我能够做到这一点:

>>> df[['data','category']].mean()
Out[48]: 
data        5894.677985
category      13.805886
dtype: float64

我试图获得平均为每个类别。 它看起来简单的,但是当我这样做:

>>> df[['data','category']].groupby('category').mean()

要么

>>> df.groupby('category')['data'].mean()

它返回这样的错误:

DataError: No numeric types to aggregate

有没有错误,如果我取代上述两种功能.count()

我该怎么办错? 什么是让每个类别的平均正确的方法是什么?

Answer 1:

你可以做一个df.dtypes? 在下面类型的例子是为智力正常工作。

    import pandas as pd

    ##group by 1 columns
    df = pd.DataFrame({' data': [4610, 4611, 4612, 4613], 'Category': [2, 2,    7, 7]})
    print df.groupby('Category'). mean()


    ##Mutiple columns to group by
    df1 = pd.DataFrame({' data': [4610, 4611, 4612, 4613], 'Category': [2,    2, 7, 7], 'Category2' : ['A','B','A','B']})
    key=['Category','Category2']
    print df1.groupby( key).mean()

 Category Category2       
 2        A           4610
          B           4611
 7        A           4612
          B           4613


Answer 2:

如前所述,你不给和原料与材料数据passing_site的例子,但我猜他们是浮动利率号码。 正如我敢肯定,你可以想像,你不能对浮点数组。 相反,你需要对整数或某些类型的类别组。

试着这么做:

df.groupby(['data', 'category'])['passing_site', 'testTime'].mean()

你上进行分组“数据”和“分类”,然后计算数值列“passing_site”和“原料与材料”的意思。



文章来源: Pandas: using groupby to get mean for each data category