我有一个与此类似的 DataFrame:
| | id | Group1 | Group2 | Group3 |
|---|----|--------|--------|--------|
| 0 | 22 | A | B | C |
| 1 | 23 | B | C | D |
| 2 | 24 | C | B | A |
| 3 | 25 | D | A | C |
Run Code Online (Sandbox Code Playgroud)
我想要得到这样的东西:
| | Group | id_count |
|---|-------|----------|
| 0 | A | 3 |
| 1 | B | 3 |
| 2 | C | 3 |
| 3 | D | 2 |
Run Code Online (Sandbox Code Playgroud)
基本上对于每个组,我想知道有多少人(id)选择了它。
我知道有pd.groupby(),但它只给出一列的适当结果(如果我给它一个列表,它不会将组 1,2,3 组合在一列中)。
DataFrame.melt与以下一起使用GroupBy.size:
df1 = (df.melt('id', value_name='Group')
.groupby('Group')
.size()
.reset_index(name='id_count'))
print (df1)
Group id_count
0 A 3
1 B 3
2 C 4
3 D 2
Run Code Online (Sandbox Code Playgroud)