Многозначные или многоиндексные сводные таблицы в пандах - PullRequest
0 голосов
/ 09 июня 2018

У меня есть пример данных таблицы данных, например

import pandas as pd

compnaies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google']
products = ['OS', 'Search', 'E-comm', 'E-comm', 'Social Media', 'OS']
count = [5,7,3,19,23,54]
average = [1.2,3.4,2.4,5.2,3.2,4.4]

df = pd.DataFrame({'company' : compnaies, 'product':products,
                   'count':count , 'average' : average})
df

    average company count   product
0   1.2 Microsoft   5   OS
1   3.4 Google      7   Search
2   2.4 Amazon      3   E-comm
3   5.2 Microsoft   19  E-comm
4   3.2 Facebook    23  Social Media
5   4.4 Google      54  OS

Теперь я хочу создать сводное представление как для «среднего», так и «счетного», но я не могу определить оба значения, здесь пример кодас одним «средним»

df.pivot_table(index='company', columns='product', values='average', fill_value=0)

результат будет

enter image description here

, но мне нужны данные в формате ниже, может кто-топомогите пожалуйста тем временем я попробовал стек, и группа, с помощью которой создается многоиндексный фрейм данных, но он не дает желаемого результата, я поделюсь кодом при необходимости

желаемый вывод, который мне нужно загрузить в excel

enter image description here

1 Ответ

0 голосов
/ 09 июня 2018

Используйте set_index с stack и unstack:

df = (df.set_index(['company','product'])
       .stack()
       .unstack(axis=1)
       .rename_axis([None, None])
       .rename_axis(None, axis=1))
print (df)
                   E-comm    OS  Search  Social Media
Amazon    count       3.0   NaN     NaN           NaN
          average     2.4   NaN     NaN           NaN
Facebook  count       NaN   NaN     NaN          23.0
          average     NaN   NaN     NaN           3.2
Google    count       NaN  54.0     7.0           NaN
          average     NaN   4.4     3.4           NaN
Microsoft count      19.0   5.0     NaN           NaN
          average     5.2   1.2     NaN           NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...