Создание фрейма данных доступности

У меня есть pandas dataFrame, который содержит значения нескольких параметров с отметками времени, которые находятся на расстоянии 15 минут. Параметры могут содержать значения NaN (np.nan). Моя цель - найти общее количество доступных значений в месяц для каждого параметра, то есть общее количество значений в этом месяце, которые не равны 0 или np.nan.

Я попытался превратить все допустимые значения (значения, отличные от нуля или np.nan) в 1; и все недопустимые значения в 0. Таким образом я могу просто суммировать все значения параметра за месяц и получить общее количество доступных значений за этот месяц.

df.fillna(0)

for col in selected_parameters:
    df.loc[df[col] > 0, col] = 1

Это создает df, имеющий 1 для действительных значений и 0 для недопустимых значений.

Чего я не могу сделать, так это создать новый dataFrame, который будет иметь временные метки с интервалом в месяц (вместо 15 минут), и для каждого месяца я могу иметь общее количество доступных значений за этот месяц.

Почему в 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
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Используйте groupby с суммой в качестве функции агрегатора

df.groupby([df.index.dt.year, df.index.dt.month]).agg('sum')

Это предполагает, что ваши временные метки находятся в индексе.

Благодаря тонну! Кстати, я использовал временные метки, поэтому не нужно было делать index.dt. "df.groupby ([df.index.year, df.index.month]). agg ('sum')" работал у меня.

dapperdan 10.01.2019 15:23

Могу ли я сделать это таким образом, чтобы сумма вычислялась только для «selected_parameters», а не для всех неиндексных параметров?

dapperdan 10.01.2019 15:38

что-то вроде этого? df [выбранные_параметры] .groupby ([df.index.year, df.index.month]). agg ('сумма')

Filipe 10.01.2019 15:41

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