Присвоение имени индексу при использовании groupby() в панд

#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. Большое спасибо! Это исправило мою проблему 🙂