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'])