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