2

我有一个带有 3 列的 pandas DataFrame:product、、regioncost

我想在 Jupyter 笔记本中使用 pivottable.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()

怎么做 ?

4

1 回答 1

3

第一个问题是这个函数不接受valueskwarg,而是vals.

您将面临的第二个问题是您需要指定一个聚合函数(默认为Count)来汇总您的值。这有点类似于pandas数据透视表的aggfunc论点。如果您希望只有一个值,那么类似pivot_ui(df, rows=['product'], cols=['region'], vals=['cost'], aggregatorName='First')的东西应该可以解决问题。

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

于 2018-11-26T03:58:36.693 回答