熊猫计算主题的陌生感

时间:2016-08-18 04:38:18

标签: python pandas

这是我的任务的简短描述。我有一个如下所示的数据框:df = pd.DataFrame([[2, 0], [2, 1], [1, 0], [1, 0], [1, 1], [3, 0]], columns=['topic', 'strange'])

对于每个主题,我都需要计算“奇怪”行的百分比。所以结果就像这个1 - 1/3, 2 - 1/2, 3 - 0

我提出的最有效的解决方案是:

a = df['topic'].value_counts()
b = df[df['strange'] == 1]['topic'].value_counts()
res = (b / a).fillna(0)

此外,这很可能是合理的,而且不是那么难看,我相信通过智能的groupby操作可以更轻松地实现这一点。

有没有人有其他建议?寻找更短或更快的替代方案。

1 个答案:

答案 0 :(得分:2)

如果strange保证仅为0或1,则可以采用均值:

In [7]: df.groupby("topic").mean()
Out[7]:
        strange
topic
1      0.333333
2      0.500000
3      0.000000