gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:10:54 25 4
gpt4 key购买 nike

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

使用这样的数据框:

    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

关于python - Pandas :如何按一列分组并显示每组所有其他列的唯一值计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com