在Pandas中,如何将布尔列转换为分类列



我有一个Pandas DataFrame,其中一列包含布尔值。这样想:

id  is_male  count
0   1     True     10
1   1    False      8
2   2     True      5
3   2    False     10
4   3     True      3
5   3    False      4

例如,id表示一个学校班级,其他列表示该班级中有多少男学生和女学生。现在,同样的信息可以用一种更干净的方式呈现,比如:

id  male  female
0  1    10       8
1  2     5      10
2  3     3       4

我的问题是:有没有一种干净的方法,使用Pandas,将第一个DataFrame转换为第二个?我有一个实现,但既不干净也不简短。如果需要的话,我可以提供,但我不想把我的问题陈述弄得一团糟。

pivot_tablerename:一起使用

piv = df.pivot_table(index='id', 
columns='is_male', 
values='count').rename(columns={False:'female', True:'male'})
is_male  female  male
id                   
1             8    10
2            10     5
3             4     3

要删除列名属性,请使用rename_axis:

piv = piv.rename_axis(None, axis=1)
female  male
id              
1        8    10
2       10     5
3        4     3

如果要将id作为列返回,请使用reset_index:

piv = piv.reset_index()
id  female  male
0   1       8    10
1   2      10     5
2   3       4     3

全部作为一行

piv = df.pivot_table(index='id', columns='is_male', values='count')
.rename(columns={False:'female', True:'male'})
.rename_axis(None, axis=1)
.reset_index()

最新更新