【问题标题】:Counting values using pandas groupby使用 pandas groupby 计算值
【发布时间】:2017-01-26 13:04:11
【问题描述】:

这是我的数据框

data = {'Date' : ['08/20/10','08/20/10','08/20/10','08/21/10','08/22/10','08/24/10','08/25/10','08/26/10'] , 'Receipt' : [10001,10001,10002,10002,10003,10004,10004,10004],
   'Product' : ['xx1','xx2','yy1','fff4','gggg4','fsf4','gggh5','hhhg6']}

dfTest = pd.DataFrame(data)
dfTest

这将产生:

    Date    Product    Receipt
0   08/20/10    xx1    10001
1   08/20/10    xx2    10001
2   08/20/10    yy1    10002
3   08/21/10    fff4    10002
4   08/22/10    gggg4   10003
5   08/24/10    fsf4    10004
6   08/25/10    gggh5   10004
7   08/26/10    hhhg6   10004

我想获取每天唯一收据的数量。

这就是我所做的:

dfTest.groupby(['Date','Receipt']).count()

                  Product
Date    Receipt 
08/20/10    10001   2
            10002   1
08/21/10    10002   1
08/22/10    10003   1
08/24/10    10004   1
08/25/10    10004   1
08/26/10    10004   1

我对这种索引表示感到困惑,所以我重新设置了它。

df2 = dfTest.groupby(['Date','Receipt']).count().reset_index()
df2

    Date    Receipt   Product
0   08/20/10    10001   2
1   08/20/10    10002   1
2   08/21/10    10002   1
3   08/22/10    10003   1
4   08/24/10    10004   1
5   08/25/10    10004   1
6   08/26/10    10004   1

现在我按日期对它进行分组,然后只显示收据计数。

df2.groupby(['Date'])['Receipt'].count()

Date
08/20/10    2
08/21/10    1
08/22/10    1
08/24/10    1
08/25/10    1
08/26/10    1
Name: Receipt, dtype: int64

在那里我得到了每天唯一收据的数量。我认为我提出解决方案的方式有点粗糙。有没有更好的方法来做我打算做的事情?

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    试试这个:

    In [191]: dfTest.groupby('Date').Receipt.nunique()
    Out[191]:
    Date
    08/20/10    2
    08/21/10    1
    08/22/10    1
    08/24/10    1
    08/25/10    1
    08/26/10    1
    Name: Receipt, dtype: int64
    

    或者这个,取决于你的目标:

    In [188]: dfTest.groupby(['Date','Receipt']).Product.nunique().reset_index(level=1, drop=True)
    Out[188]:
    Date
    08/20/10    2
    08/20/10    1
    08/21/10    1
    08/22/10    1
    08/24/10    1
    08/25/10    1
    08/26/10    1
    Name: Product, dtype: int64
    

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多