отображение данных в Jupyter pivottable.js - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть пандас DataFrame с 3 столбцами: product, region и cost.

Я хочу отобразить сводную таблицу с помощью pivottable.js в блокноте Jupyter, такую, что product являются строками, region являются столбцами, а cost являются значениями.

Я пробовал:

from pivottablejs import pivot_ui
import pandas as pd
df = pd.DataFrame({'region':['N', 'S', 'W', 'E', 'N', 'S', 'W', 'E'], 
                   'product':['P1', 'P1', 'P1', 'P1', 'P2', 'P2', 'P2', 'P2'],
                   'cost':[10, 13, 17, 28, 29, 23, 17, 18]})
pivot_ui(df, rows=['product'], cols=['region'], values=['cost'])

Но это не работает, так как values не существуетатрибут для pivot_ui().

Как это сделать?

1 Ответ

0 голосов
/ 26 ноября 2018

Первая проблема заключается в том, что эта функция не принимает values kwarg, а скорее vals.

Вторая проблема, с которой вы столкнетесь, заключается в том, что вам необходимо указать функцию агрегирования.(по умолчанию Count), чтобы суммировать ваши значения.Это похоже на аргумент pandas сводной таблицы aggfunc.Если вы ожидаете, что у вас будет только одно значение, то что-то вроде pivot_ui(df, rows=['product'], cols=['region'], vals=['cost'], aggregatorName='First') должно сработать.

В порядке пояснения, ваш код выше просто обеспечивает Count входных записей на ячейку.Count не принимает никаких аргументов, поэтому передача vals сама по себе не изменит этого.First принимает аргументы, поэтому передача vals=['cost'] приведет к тому, что каждая ячейка будет содержать первое значение cost (упорядоченное через «естественную сортировку») для каждой ячейки.

...