【问题标题】:Pandas: pivot_table unique count returns count熊猫:pivot_table 唯一计数返回计数
【发布时间】: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


【解决方案1】:

使用 groupby 获取 col_1col_3 的每个组合,然后 unstack 以获取 col_3 值作为列:

# Copying your data and reading from the clipboard:
df = pd.read_clipboard()

unique_counts = df.groupby(['col_1', 'col_3'])['col_2'].unique().map(len)
unstacked = unique_counts.unstack(level='col_3').fillna(0)

输出:

unstacked
Out[18]: 
col_3       type_1  type_3  type_4
col_1                             
location_1       1       1       0
location_2       1       0       0
location_3       0       0       1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2013-02-14
    • 1970-01-01
    • 2017-05-30
    • 2021-03-17
    相关资源
    最近更新 更多