我有一个名为industry的列,我对它进行了如下热编码:一些观察结果可能属于多个行业还有重复的id,如果是重复的,我只想计数一次。
id food fitness retail grocery
1 1 0 1 1
2 1 0 0 0
3 0 1 0 0
4 1 0 0 1
4 1 0 0 1
5 1 0 1 0
6 0 1 1 0
6 0 1 1 0
如何将这一个热编码数据帧转换为可以为每个热编码类别绘制计数的位置?
预期输出
category count
food 4
fitness 2
retail 3
grocery 2
尝试:
>>> df[~df.id.duplicated()].drop('id',1).sum().to_frame('count').rename_axis('category')
count
category
food 4
fitness 2
retail 3
grocery 2
您可以像以下示例一样Transpose
您的DF:
df = pd.DataFrame({
'food': [1,1,0,1,1,0],
'fitness':[0,0,1,0,0,1],
'retails': [1,0,0,0,0,1],
'grocery': [1,0,0,1,1,0]
})
out = df.T.sum(axis=1)
print(out)
food 4
fitness 2
retails 2
grocery 3
dtype: int64
为了将这个系列转换为DataFrame,你可以这样做:
out = out.to_frame('count').rename_axis('category').reset_index()
print(out)
catagory count
0 food 4
1 fitness 2
2 retails 2
3 grocery 3
最后,您可以将所有这些功能链接如下:
out = df.T.sum(axis=1).to_frame('count').rename_axis('catagory').reset_index()