1
下面是我的任务的一个非常简短的描述。我有一个像这样的数据框:df = pd.DataFrame([[2, 0], [2, 1], [1, 0], [1, 0], [1, 1], [3, 0]], columns=['topic', 'strange'])
熊猫计算话题的奇怪性
对于每个主题,我需要caclulate'奇怪'的行的百分比。所以结果会是这样的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操作来实现更简单。
有没有人有其他建议?寻找更短或更快的选择。
其实怪是一个布尔值。所以这是有保证的。这显然比我的要短,而且对于我的10毫秒行数据帧,有20万个奇怪的元素,你的解决方案只需要更少的时间:** 3.22秒** ** ** 2.97 ** –