首页 > 解决方案 > 如何根据熊猫中另一列数据框中的唯一值计算出现次数?请考虑以下示例

问题描述

protocol results:
tcp       0
tcp       1
udp       1
udp       0
tcp       1
icmp      0

我想要通过计数来输出:

[protocol]  [frequency]  [No. of 0's in results] [No. of 1's in results 
tcp          3            1                        2
udp          2            1                        1
icmp         1            1                        0

标签: pythonpandasdataframe

解决方案


使用crosstabwithDataFrame.add_prefix和一些数据清理DataFrame,然后通过DataFrame.insertwith添加第二列sum

df = (pd.crosstab(df.protocol, df.results)
        .add_prefix('No ')
        .reset_index()
        .rename_axis(None, axis=1))
df.insert(1, 'freq', df.sum(axis=1))
print (df)
  protocol  freq  No 0  No 1
0     icmp     1     1     0
1      tcp     3     1     2
2      udp     2     1     1

推荐阅读