我有3列的pandas DataFrame:productregioncost

我想在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')之类的技巧。

作为解释,上面的代码仅提供每个单元格的输入记录的CountCount不接受任何参数,因此单独传入vals不会改变它。 First确实接受参数,因此传入vals=['cost']将导致每个单元格每个单元格包含cost的第一个值(通过“自然排序”排序)。

关于python - 在Jupyterivottable.js中显示数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53472501/

10-12 21:38