将一个热编码数据帧转换为计数



我有一个名为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()

最新更新