#python #pandas
Вопрос:
У меня есть данные о погоде за разные годы. В этом я пытаюсь найти долгосрочные средние значения температуры за каждый месяц, которых я достиг, используя следующее.
mh3 = mh3.groupby([mh3.index.month, mh3.index.day])
mh3 = mh3[['dry_bulb_tmp_mean', 'global_horiz_radiation']].mean()
Однако, делая это, я получаю два индекса для фрейма данных (как месяц, так и день, что нормально). Проблема в том, что обоим этим столбцам индекса присвоена дата имени. Есть ли способ вручную добавить имя? Это вызывает проблемы позже в моем коде, когда мне нужно провести некоторый анализ данных по месяцам. Спасибо
Комментарии:
1.
mh3.index.names = ['month', 'day']
Ответ №1:
Название name
Series
вашей группы становится названием Index
уровней, поэтому переименуйте их в группе.
mh3 = mh3.groupby([mh3.index.month.rename('month'), mh3.index.day.rename('day')])
Или, если вы не хотите вводить так много, вы можете создать группировку с пониманием списка getattr
и переименованием в атрибут.
import pandas as pd
df = pd.DataFrame(index=pd.date_range('2010-01-01', freq='4H', periods=10),
data={'col1': range(10)})
grpr = [getattr(df.index, attr).rename(attr) for attr in ['month', 'day']]
df.groupby(grpr).sum()
# col1
#month day
#1 1 15
# 2 30
Комментарии:
1. Большое спасибо! Это исправило мою проблему 🙂