我有一个3列的pandas DataFrame:product
,region
和cost
。
我想在Jupyter笔记本中使用ivottable.js显示数据透视表,使得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
的{{1}}属性不存在。
该怎么做?
答案 0 :(得分:1)
第一个问题是该函数不接受values
kwarg,而是接受vals
。
您将要面对的第二个问题是,您需要指定一个汇总函数(默认值为Count
)来汇总您的值。这有点类似于pandas
数据透视表的aggfunc
参数。如果您期望只有一个值,那么应该使用pivot_ui(df, rows=['product'], cols=['region'], vals=['cost'], aggregatorName='First')
之类的方法。
通过解释,上面的代码仅提供每个单元格的Count
输入记录。 Count
不接受任何参数,因此单独传递vals
不会改变这一点。 First
确实接受参数,因此传入vals=['cost']
将导致每个单元格每个单元格包含cost
的第一个值(通过“自然排序”排序)。