2013-04-04 3 views
0

У меня есть CSV-файл с двумя столбцами, содержащими даты и 0 или 1, как так:Панды даунсамплинг Выпуск

17/08/2012 07:47:16 0 
17/08/2012 07:54:31 1 
17/08/2012 08:02:31 0 
17/08/2012 09:22:33 0 
17/08/2012 09:58:05 0 
17/08/2012 12:26:59 1 
17/08/2012 20:56:00 0 
18/08/2012 10:04:06 0 
18/08/2012 10:42:52 0 
20/08/2012 07:22:02 0 
20/08/2012 07:54:28 0 
20/08/2012 08:01:58 0 
20/08/2012 08:16:31 1 
20/08/2012 08:26:38 0 
20/08/2012 08:55:19 1 
20/08/2012 09:00:09 0 
20/08/2012 09:26:11 0 
20/08/2012 09:50:10 0 
20/08/2012 10:33:37 0 
20/08/2012 10:39:13 0 
20/08/2012 10:39:35 1 
20/08/2012 11:15:07 1 
20/08/2012 11:19:15 0 
20/08/2012 11:21:01 0 

я загрузить этот файл в DataFrame raw_data, а затем изменить индекс к Timestamp:

ts_data=raw_data.set_index(pd.to_datetime(raw_data.when_created,dayfirst=True)) 

тогда я пытаюсь декодируют данные, используя:

daily_conversions=ts_data.resample('D',how='sum') 

Он работает все дни (более 7 месяцев, ее е я включать только подмножество), за исключением одного дня, где я получаю этот выход:

2012-08-20 NaN

Это не имеет смысла, как вы можете видеть из данных. Интересная часть состоит в том, что если я снижу с использованием более высокой частоты, например, «h», я получаю правильные результаты для этого конкретного дня. Я получаю нулевые значения за часы, которые не присутствуют 0 для присутствующего часа, но имеют только 0 и правильная сумма за часы, которые присутствуют, но == == 1. Любые идеи, пожалуйста?

+1

Вы уверены, что не вернулись с 2012-08-19 по значению NaN? Нет данных 8/19, так что это имело бы смысл, и это то, что я получил, когда я запустил тот же код, что и вы. – bdiamante

+0

Благодарю вас, bdiamante, вы помогли мне понять, что не так, я сосредоточился на том, что не так с 20-м, и не видел, чтобы 19-го не хватало. – luckyfool

ответ

0

После полезного комментария выше я понял, что случилось. Это всего лишь вопрос маркировки. Таким образом, на самом деле дата, на которую следует вернуть NaN, - 19, но по умолчанию - label = 'right', поэтому она показывалась как 20-е. Когда я добавляю label = 'left', он отлично работает. Спасибо