【发布时间】:2014-12-14 23:31:38
【问题描述】:
我正在使用 pandas 编写几个数据透视表。对于他们中的许多人,我需要返回唯一值。在二维数据透视表中,以下代码可以正常工作。当我添加第三个维度时,代码返回计数而不是唯一计数。我怀疑这与 aggfunc 有关,但无法确定应该更改什么。
代码如下:
data = pd.read_csv('scrubbed_data.csv', usecols = ['col_1', 'col_2', 'col_3'])
cd1 = pd.tools.pivot.pivot_table(data = data, values = 'col_2', index = 'col_1', columns = 'col_3', aggfunc=lambda x: len(x.unique()))
cd1.to_csv('pivot.csv')
根据要求,以下是数据的模型:
col_1 col_2 col_3
location_1 id_1 type_1
location_1 id_1 type_1
location_2 id_1 type_1
location_1 id_2 type_3
location_3 id_3 type_4
目标是计算给定 col_1 和 col_3 的 col_2 中唯一条目的数量。应该出现的是:
. type_1 type_2 type_3 type_4
location_1 1 0 1 0
location_2 1 0 0 0
location_3 0 0 0 0
但是,会返回以下内容:
. type_1 type_2 type_3 type_4
location_1 2 0 1 0
location_2 1 0 0 0
location_3 0 0 0 0
其中 [1,1] 是矩阵中的违规值。
【问题讨论】:
-
如果您发布 csv 样本会有所帮助
-
我无法从该数据中重现您的结果,并且由于它是
type_1而不是category_1,因此不能是该模型的输出。你能举一个独立的例子吗?
标签: python pandas unique pivot-table