Как посчитать количество значений в пределах определенного интервала дат из значений данных в пандах? - PullRequest
0 голосов
/ 30 мая 2018

Я хочу посчитать и вывести на график число значений «выплаты» по дням за период с 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 ]

0 голосов
/ 30 мая 2018
df.set_index('payout').loc['2018-04-01':'2018-04-30']

для первой строки должно сделать это.

  • .set_index делает ваш столбец выплат индексомЭто не меняет оригинал df.Подробности смотрите в документах .
  • Теперь, когда у вас есть DatetimeIndex, вы можете просто использовать .loc для непосредственного индексирования строк даты.Обратите внимание, что в отличие от обычной индексации, это будет включать все 24 часа 30 апреля.
0 голосов
/ 30 мая 2018

Вы можете использовать ту же логику, что и вы, но использовать интересующие вас строки дат:

(df.loc[df['payout'].between('2018-04-01', '2018-04-30'), 'payout']
         .dt.to_period('D')
         .value_counts()
         .sort_index()
         .plot(kind="bar")
)
0 голосов
/ 30 мая 2018

другое решение:

df[(df['date'] >= '2018-04-01') & (df['date'] < '2018-05-01')]['payout']
0 голосов
/ 30 мая 2018

Просто отметьте месяц и год и используйте свой текущий метод

df.loc[(df.date.dt.month == 4) & (df.date.dt.year == 2018), 'payout']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...