如何从pandas数据帧值计算特定日期间隔内的值的数量?

时间:2018-05-29 21:37:16

标签: python pandas dataframe

我想计算并计划“支付”的数量'此数据框中2018-04-01至2018-05-01期间的日期值:

df['payout'].head(10)

0   2017-02-14 11:00:06
1   2015-03-14 11:00:06
2   2014-04-14 11:00:06
3   2017-11-14 11:00:06
4   2016-12-14 11:00:06
5   2018-04-10 11:00:06
6   2018-04-11 11:00:06
7   2018-04-12 11:00:06
8   2018-04-13 11:00:06
9   2018-04-14 11:00:06

我可以获得2018年的日期情节:

(df.loc[df['payout'].dt.year.between(2018, 2019), 'payout']
         .dt.to_period('D')
         .value_counts()
         .sort_index()
         .plot(kind="bar")
)

enter image description here

如何将地块缩减至2018年4月?

谢谢

4 个答案:

答案 0 :(得分:3)

只需检查月份和年份,并使用当前的方法

df.loc[(df.date.dt.month == 4) & (df.date.dt.year == 2018), 'payout']

答案 1 :(得分:1)

您可以使用您使用的相同逻辑,但使用您感兴趣的日期字符串:

(df.loc[df['payout'].between('2018-04-01', '2018-04-30'), 'payout']
         .dt.to_period('D')
         .value_counts()
         .sort_index()
         .plot(kind="bar")
)

答案 2 :(得分:1)

另一种解决方案:

df[(df['date'] >= '2018-04-01') & (df['date'] < '2018-05-01')]['payout']

答案 3 :(得分:1)

df.set_index('payout').loc['2018-04-01':'2018-04-30']
第一行

应该这样做。

  • .set_index使您的付款列成为索引。这不会修改原始df。有关详细信息,请参阅the docs
  • 现在你有DatetimeIndex,你可以直接用.loc索引日期字符串。请注意,与正常索引不同,这将包括4月30日的所有24小时。