Python - выходной формат data.to_csv

Из файла CSV, имеющего следующий формат:

Date,Data
01-01-01,111
02-02-02,222
03-03-03,333

Я рассчитываю среднемесячные значения, используя следующий код:

data = pd.read_csv("input.csv")
data['Month'] = pd.DatetimeIndex(data.reset_index()['Date']).month
mean_data = data.groupby('Month').mean()

Затем я вывожу CSV-файл, используя следующую команду:

mean_data.to_csv("test.csv")

Он работает нормально и дает мне следующий вывод:

Month,Data
01,01
02,02
03,03
04,04
...

Но теперь я хотел бы знать, сколько данных было включено в среднемесячный расчет. Для этого я изменил:

mean_data = data.groupby('Month').mean()

от:

mean_data = data.groupby(['Month']).agg(['mean', 'count'])

Но проблема приходит сейчас. Когда я хочу вывести CSV, у меня теперь есть странный формат следующим образом:

      Data,Data,
      mean,count,
Month,
01,     01,8,
02,     02,9,
03,     03,7,
04,     04,5,

Что не очень удобно. Вместо этого я хотел бы получить следующий вывод:

Month,Mean,Count
01,01,8
02,02,9
03,03,7
04,04,5

Кто-нибудь знает, как этого добиться?

1 ответ

Решение

Нужно указать колонку после groupby:

#convert first column to datetime
data = pd.read_csv("input.csv", parse_dates=[0])

df['Month'] = df['Date'].dt.month
mean_data = data.groupby('Month')['Data'].agg(['mean', 'count'])

следует упростить:

mean_data = data.groupby(df['Date'].dt.month)['Data'].agg(['mean', 'count'])
Другие вопросы по тегам