Среднее за каждый день в течение нескольких лет

python numpy pandas

729 просмотра

2 ответа

88 Репутация автора

Быстрый Q:

Имейте набор данных: это измерение в день в течение нескольких лет. Пытаюсь отработать среднее для всех одинаковых дат. то есть в среднем на 01.01.1995 и 01.01.1996 и 01.01.1997 и т. д.

Пробовал это:

z=df.groupby(df.index.day,df.index.month).mean()

Но получите:

TypeError: unhashable type: 'numpy.ndarray'

ура

Автор: SLE Источник Размещён: 18.07.2016 01:46

Ответы (2)


3 плюса

211821 Репутация автора

Решение

IIUC вам нужно передать список:

z=df.groupby([df.index.day,df.index.month]).mean()

То, что вы сделали, это передали несколько аргументов, чтобы он интерпретировал массив месяцев как аргумент axis, см. Документацию

Автор: EdChum - Reinstate Monica Размещён: 18.07.2016 01:48

1 плюс

435 Репутация автора

Привет @EdChum, просто добавив это как ответ, так как отображение комментария не позволяет мне показать, что я имел в виду. Я согласен, что формат даты - лучший синтаксис! Однако, когда я делаю это в обратном порядке, я получаю

    WindSpeed

1   1   1   9.283333
1   2   6.694444
1   3   7.861111
1   4   9.223529
...
1   31  8.964706
2   1   9.127778
2   2   8.733333
2   3   7.511111
...

Где первый индекс месяц, а второй день. Когда я делаю в предложенном вами порядке, я получаю:

    WindSpeed
1   1   9.283333
1   2   8.361111
1   3   6.670588
1   4   7.155556
1   5   8.450000
1   6   4.777778
1   7   3.666667
1   8   4.011765
1   9   5.210526
1   10  6.972222
1   11  7.647059
1   12  6.844444
...

Где первый индекс - день (от 1 до 31), а второй - месяц (от 1 до 12). Обычно мы смотрим на данные последовательно: за 1 января следует 2 января. У вас за первым января следует первое февраля. Это немного смутило меня! Мой работал лучше для моих нужд в любом случае. Я очень ценил ваш ответ здесь! Помог мне с моей проблемой.

Автор: EHB Размещён: 22.02.2018 09:48
Вопросы из категории :
32x32