我的dataframe有两列,如下所示:
| index | class1 | class2 |
|-------|--------|--------|
| 0 | a | z |
| 1 | a | z |
| 2 | a | y |
| 3 | b | x |
| 4 | b | y |
| 5 | b | x |
| 6 | c | z |
| 7 | c | z |
| 8 | c | x |
我想用一个班比两个班来计算统计数据。在结果中,我希望表中有一个类作为行,第二个类作为列,并且在交叉点处有值。在我的例子中,可能有大量的类计数,如class1
和class2
。因此,在列中,对应的类1中应该只有tops类2对象
作为示例输出:
| | a | | b | | c |
|---|------|---|------|---|------|
| x | 0 | | 0.33 | | 0.33 |
| | | | | | |
| y | 0.33 | | 0.33 | | 0 |
| | | | | | |
| z | 0.66 | | 0.33 | | 0.66 |
我喜欢使用crosstab
func执行这些操作:
pd.crosstab(index=df['class1'],
columns=df['class2'],
normalize='index')
问题是:
如何让所有的一班学生只留下最好的二班?除了croostab之外,还有什么方法可以聚合吗
您就快到了,您不想对
index
进行规范化,而是对columns
进行规范化:要删除索引和列名,请执行以下操作:
相关问题 更多 >
编程相关推荐