Python: подсчет количества дней в метке времени по годам - PullRequest
1 голос
/ 19 мая 2019

Это мой dataframe. Обратите внимание, что последний ряд отличается от предыдущего года. Индекс является датой и временем.

DateTime    data
2016-04-01  14.01
2016-04-02  17.25
2016-04-03  16.99
2016-04-04  17.34
2018-04-05  17.07

Я хочу посчитать количество уникальных дней в отметке времени.
Следующий код возвращает 735 .

daily = df.resample('D').sum()
print('Number of days in df:', len(daily.index))

Я хочу, чтобы результат составил 5 дней.

Ответы [ 2 ]

1 голос
/ 19 мая 2019

Вам действительно не нужно resample, так как вы не выполняете никаких операций с данными. Вы можете просто преобразовать индекс в freq='D' (при условии, что вам нужно преобразование ... то есть, что ваш индекс может также включать метки времени), а затем подсчитать количество уникальных значений:

c.asfreq('D').index.nunique()
1 голос
/ 19 мая 2019

Используйте DatetimeIndex.strftime с %m-%d для месяцев с днями и добавьте Index.nunique:

n = df.index.strftime('%m-%d').nunique()
print('Number of days in df:', n)
#Number of days in df: 5

Ваше решение должно быть изменено:

daily = df.groupby(df.index.strftime('%m-%d')).sum()
print('Number of days in df:', len(daily.index))
#Number of days in df: 5

Или путем группировки по отдельным месяцам и дням:

daily = df.groupby([df.index.month, df.index.day]).sum()
print('Number of days in df:', len(daily.index))
#Number of days in df: 5

Но при необходимости число уникальных значений также с годами:

n = df.index.nunique()
print('Number of days in df:', n)
#Number of days in df: 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...