Pandas: как избежать заполнения при передискретизации с почасовых данных на дневные

У меня есть серия, состоящая из почасовых данных. Я хочу вычислить дневную сумму. В данных могут отсутствовать часы, а иногда и даты.

2017-02-01 00:00:00  3.0
2017-02-01 01:00:00  4.0
2017-02-01 02:00:00  4.0
2017-02-03 00:00:00  3.0

Например, в приведенном выше временном ряду за 01.02.2017 представлены данные только за первые три часа. Остальные данные за 21 час отсутствуют.

Данные за 2017-02-02 полностью отсутствуют.

  1. Меня не волнуют пропущенные часы. Ежедневная сумма должна учитывать любые данные, имеющиеся за день (в примере, она должна учитывать часы 0, 1, 2).
  2. Но если дата полностью отсутствует, я должен иметь NaN в качестве суммы для этой даты.

resample(), за которой следует sum(), отлично работает для #1. Но он возвращает мне 0 для # 2.

2017-02-01  110.0
2017-02-02  0.0
2017-02-03  3.0

Вот фиктивный код:

my_series.resample('1D',closed='left',label='left').sum()

Как я могу указать resample(), чтобы не устанавливать 0 для отсутствующих дат?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
531
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте min_count=1 в sum:

min_count : int, default 0
The required number of valid values to perform the operation. If fewer than min_count non-NA values are present the result will be NA.

New in version 0.22.0: Added with the default being 0. This means the sum of an all-NA or empty Series is 0, and the product of an all-NA or empty Series is 1.

a = my_series.resample('1D',closed='left',label='left').sum(min_count=1)
print (a)
2017-02-01    11.0
2017-02-02     NaN
2017-02-03     3.0
Freq: D, Name: a, dtype: float64

Потрясающий! Я пошел выпить чашку чая, и вы решили проблему, с которой я сталкиваюсь последние 2 часа. Спасибо! Я должен был изучить документацию здесь: pandas.pydata.org/pandas-docs/stable/reference/api/…

Arnab Biswas 10.04.2019 13:21

Другие вопросы по теме