Сводные данные панд и добавить столбец
Я пытаюсь добавить суммированный столбец в сводный фрейм данных, но постоянно получаю ошибку анализа данных.
mydata = [{'amount': 3200, 'close_date':'2013-03-31', 'customer': 'Customer 1',},
{'amount': 1430, 'close_date':'2013-11-30', 'customer': 'Customer 2',},
{'amount': 4320, 'close_date':'2014-03-31', 'customer': 'Customer 3',},
{'amount': 2340, 'close_date':'2015-05-18', 'customer': 'Customer 4',},
{'amount': 4320, 'close_date':'2015-06-29', 'customer': 'Customer 5',},]
df = pd.DataFrame(mydata)
>>> df.dtypes
amount int64
close_date object
customer object
dtype: object
Я преобразую в даты, а затем отображаю в виде кварталов
df.close_date = pd.to_datetime(df.close_date)
>>> df.dtypes
amount int64
close_date datetime64[ns]
customer object
dtype: object
df.close_date = df.close_date.dt.to_period('Q')
Затем я поворачиваюсь:
pivot = pd.pivot_table(df,index='customer',columns='close_date')
Наконец, я хочу суммировать строки и столбцы, но мой этот кусок кода, похоже, не будет добавлять столбец...
pivot['sum'] = pivot.sum(axis=1)
Что я делаю не так?
1 ответ:
Вы можете просто установить поля в True.
df['close_date'] = pd.to_datetime([cd.to_period('Q') for cd in df.close_date]) pivot = pd.pivot_table(df,index='customer',columns='close_date', margins=True) >>> pivot amount close_date 172 175 176 181 All customer Customer 1 3200 NaN NaN NaN 3200 Customer 2 NaN 1430 NaN NaN 1430 Customer 3 NaN NaN 4320 NaN 4320 Customer 4 NaN NaN NaN 2340 2340 Customer 5 NaN NaN NaN 4320 4320 All NaN NaN NaN NaN 3122
Можно также суммировать столбцы следующим образом:
pivot = pd.pivot_table(df,index='customer',columns='close_date') pivot['sum'] = pivot.sum(axis=1) >>> pivot amount sum close_date 172 175 176 181 customer Customer 1 3200 NaN NaN NaN 3200 Customer 2 NaN 1430 NaN NaN 1430 Customer 3 NaN NaN 4320 NaN 4320 Customer 4 NaN NaN NaN 2340 2340 Customer 5 NaN NaN NaN 4320 4320
И вот как можно суммировать строки:
pivot.ix['Total'] = pivot.sum() >>> pivot amount close_date 2013Q1 2013Q4 2014Q1 2015Q2 customer Customer 1 3200 NaN NaN NaN Customer 2 NaN 1430 NaN NaN Customer 3 NaN NaN 4320 NaN Customer 4 NaN NaN NaN 2340 Customer 5 NaN NaN NaN 4320 Total 3200 1430 4320 6660