我有一个 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
Run Code Online (Sandbox Code Playgroud)
例如,其中id
标识一个学校班级,其他列表示班级中有多少男学生和女学生。现在,相同的信息可以以更简洁的方式呈现,例如:
id male female
0 1 10 8
1 2 5 10
2 3 3 4
Run Code Online (Sandbox Code Playgroud)
我的问题:是否有一种干净的方法,使用 Pandas 将第一个 DataFrame 转换为第二个 DataFrame?我有一个实现,但既不干净也不短。如果需要的话我可以提供,但我不想让我的问题陈述变得混乱。
pivot_table
与以下一起使用rename
:
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
Run Code Online (Sandbox Code Playgroud)
要删除列名称属性,请使用rename_axis
:
piv = piv.rename_axis(None, axis=1)
female male
id
1 8 10
2 10 5
3 4 3
Run Code Online (Sandbox Code Playgroud)
如果您想id
返回为列,请使用reset_index
:
piv = piv.reset_index()
id female male
0 1 8 10
1 2 10 5
2 3 4 3
Run Code Online (Sandbox Code Playgroud)
全部作为一个衬垫:
piv = df.pivot_table(index='id', columns='is_male', values='count')\
.rename(columns={False:'female', True:'male'})\
.rename_axis(None, axis=1)\
.reset_index()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2681 次 |
最近记录: |