我有一个如下所示的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
答案 0 :(得分:1)
我们可以将query
与Series.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