Изменение имен столбцов с ежемесячных на квартальные данные (среднее значение) - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть фрейм данных, в котором два первых столбца - «Регион» и «Штат», а следующие столбцы - конкретные месяцы.Моя цель - преобразовать месячные данные в квартальные, используя трехмесячное среднее значение.

Я изменил свой фрейм данных, поэтому я оставляю первые два столбца такими, какие они есть, и заменяю остальные имена столбцов на datetime.

Затем я попытался проделать тот же трюк, но с использованием «функции повторной выборки».

data.columns = data.columns[:2].tolist()+pd.to_datetime(data.columns[2:], format="%Y-%m").tolist() #keep first two columns, change next two to dateformat

data.columns = data.columns[:2].tolist()+data.columns[2:].resample("Q",axis=1).mean()

Я получаю ошибку трассировки, утверждающую, что у объекта «Index» нет атрибута «resample».

1 Ответ

0 голосов
/ 27 сентября 2019

Я нашел решение сам (с небольшой помощью другого обсуждения здесь, на которое, к сожалению, я забыл ссылку)

Я думаю, код мог бы быть более полным, если вы более опытный питонпрограммист, чем я.Не стесняйтесь комментировать!

data_new = data.drop(["RegionName", "State"], axis=1) #drop two first columns, keep only dates
data_new.columns = pd.to_datetime(data_new.columns, format="%Y-%m").tolist() #convert to datetime format

#convert to quarterly data using mean, relabel as string
data_new = (data_new.groupby(pd.PeriodIndex(data_new.columns, freq="Q"), axis=1).mean().rename(columns=lambda c: str(c).lower()))

data = data.loc[:, ["State", "RegionName"]] #data now only contain first two columns

#merge data and data_new


data_final = pd.merge(data, data_new, left_index=True, right_index=True) #merge data
data_final.set_index(["State", "RegionName"], inplace=True) #set multiindex
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...