熊猫:如何按一列分组并显示每组所有其他列的唯一值计数?

背心

数据样本和问题末尾的尝试

使用这样的数据框:

    Type    Class   Area    Decision
0   A       1       North   Yes
1   B       1       North   Yes
2   C       2       South   No
3   A       3       South   No
4   B       3       South   No
5   C       1       South   No
6   A       2       North   Yes
7   B       3       South   Yes
8   B       1       North   No

如何在其他列下进行分组Decision并获得Decision唯一值的计数,因此我得出以下结论:

Decision  Area_North  Aread_South  Class_1  Class_2  Type_A  Type_B  Type_C
Yes       3           1            2        0        2       2       1
No        1           4            1        1        1       2       2

我确信可以groupby().agg()像这样使用一个好开始

dfg = df.groupby('Decision').agg({'Type':'count',
                           'Class':'count',
                           'Decision':'count'})

然后旋转结果,但到目前为止还远远不够。我将需要以某种方式包括所有其他列的唯一值。我确定我已经看到您可以用代替'Position':'count''Position':pd.Series.unique,但是我似乎无法使其正常工作。

码:

import pandas as pd

df = pd.DataFrame({'Type': {0: 'A',
                          1: 'B',
                          2: 'C',
                          3: 'A',
                          4: 'B',
                          5: 'C',
                          6: 'A',
                          7: 'B',
                          8: 'B'},
                     'Class': {0: 1, 1: 1, 2: 2, 3: 3, 4: 3, 5: 1, 6: 2, 7: 3, 8: 1},
                     'Area': {0: 'North',
                          1: 'North',
                          2: 'South',
                          3: 'South',
                          4: 'South',
                          5: 'South',
                          6: 'North',
                          7: 'South',
                          8: 'North'},
                     'Decision': {0: 'Yes',
                          1: 'Yes',
                          2: 'No',
                          3: 'No',
                          4: 'No',
                          5: 'No',
                          6: 'Yes',
                          7: 'Yes',
                          8: 'No'}})

dfg = df.groupby('Decision').agg({'Type':'count',
                           'Class':'count',
                           'Decision':'count'})
dfg
耶斯列尔

使用DataFrame.meltDataFrame.pivot_table和压平MultiIndex

df = df.melt('Decision').pivot_table(index='Decision', 
                                     columns=['variable','value'], 
                                     aggfunc='size', 
                                     fill_value=0)
df.columns = df.columns.map('{0[0]}_{0[1]}'.format)
df = df.reset_index()
print (df)
  Decision  Area_North  Area_South  Class_1  Class_2  Class_3  Type_A  Type_B  \
0       No           1           4        2        1        2       1       2   
1      Yes           3           1        2        1        1       2       2   

   Type_C  
0       2  
1       0  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫-按一列分组并获取所有其他列的均值

R获取具有相同但较小的其他列值的唯一列值的计数

当按其他列分组时,如何选择特定列中具有非唯一值的行?

如何按熊猫每组两列的唯一记录计数?

熊猫如何根据每组的长度和另一列的计数值计算按组结果

如何使一列在其他列中具有唯一值

如何根据另一列的值对列进行熊猫分组并获得每组的特定结果?

每组的唯一值计数为带有熊猫的新列

计算按其他列的唯一值分组的唯一值百分比

熊猫-按一列分组并汇总其他列以列出

按一列分组并显示另一列的所有结果

列出按另一列分组的唯一值

熊猫按一列分组,并仅保留列中具有所有值的组

DataFrame:按一列分组并平均其他列

熊猫:按日期将一列分组,并在另一列中计算特定值的累计数量

熊猫:当其他两列为唯一对时,从一列复制值

MySQL计数一列的唯一性,而另一列在分组依据中具有单个值

按一列分组,查看另一列长度不均的所有唯一结果

对一列进行分组并查找熊猫中其他两列的差的最大(绝对)值

如何平均一列中所有其他列都相同的值?

如果熊猫中没有其他唯一列,如何将多列转换为单独的行/值?

在同一列中显示按功能分组的计数

按另一列值分组并计数

熊猫-所有唯一列组合的计数,包括无NONE的行

如何按某些列分组并在现有的另一列中显示分组值

如何将熊猫数据框中前5个值之外的所有其他唯一值(按大小)分组到“其他”类别中进行绘图和制表?

按列值的唯一行分组的熊猫计算

熊猫Slinear插值按另一列分组

SQL Server查询以查找按一列分组但在其他至少一列中不同的值