如何在特定时间段内按值分组

时间:2019-08-15 15:07:34

标签: python-3.x pandas

我有一个如下所示的DataFrame:

  Item  Date      Count
    a   6/1/2018    1
    b   6/1/2018    2
    c   6/1/2018    3
    a   12/1/2018   3
    b   12/1/2018   4
    c   12/1/2018   1
    a   1/1/2019    2
    b   1/1/2019    3
    c   1/1/2019    2

我想获取指定时间从7/1/2018到6/1/2019的每个项目的计数总和。对于这种情况,预期的输出将是:

  Item    TotalCount
    a       5
    b       7
    c       3

2 个答案:

答案 0 :(得分:1)

我们可以将querySeries.between一起使用,并与GroupBy.sum进行链接:

df.query('Date.between("07-01-2018", "06-01-2019")').groupby('Item')['Count'].sum()

输出

Item
a    5
b    7
c    3
Name: Count, dtype: int64

要匹配您的确切输出,请使用reset_index

df.query('Date.between("07-01-2018", "06-01-2019")').groupby('Item')['Count'].sum()\
  .reset_index(name='Totalcount')

输出

  Item  Totalcount
0    a           5
1    b           7
2    c           3

答案 1 :(得分:0)

这里是.loc[]使用lambda的人:

#df.Date=pd.to_datetime(df.Date)
(df.loc[lambda x: x.Date.between("07-01-2018", "06-01-2019")]
    .groupby('Item',as_index=False)['Count'].sum())

  Item  Count
0    a      5
1    b      7
2    c      3