2014-08-27 45 views
1

现在,我的代码导出为CSV,看起来像这样删除满足一定的数值​​标准,熊猫(Python 3中)行

Keyword  Sum   Score  Observances 
    Green   0   inf   1 
    Eggs   5   3   2 
    And   10   5   3 
    Ham    0   inf   4 

我想怎么办是删除所有这些行在Sum列中包含0并在分数下包含“inf”。

我的代码,现在去如下:

newlist = df1.join(s) 
def func(x): 
    return pd.Series({'Observances': len(x),'Sum': x.Conv.sum(),'Zero': len(x[x.Conv==0])}) 
group = newlist.groupby(['Keyword']).apply(func).reset_index() 
score = group.Sum/(group.Observances - group.Zero) 
group['Score'] = score 

我试图取代所有的“INF”与南,然后用熊猫去除掉,但似乎并没有工作(可能做错了)。我已阅读.filter函数可能是我正在寻找,但仍然不确定。

任何帮助将不胜感激!

+0

对不起,你要删除的总和小于5的所有行或有inf在分数? – EdChum 2014-08-27 14:31:53

+0

你提供的代码与这个问题有什么关系? – joris 2014-08-27 14:32:03

+0

哈!只是在我发布之后马上就发现它了,然而,欣赏这些反应和兴趣。谢谢! – user3682157 2014-08-27 14:37:22

回答

0

基于I上面提供的代码,此答案是一个简单的如使用以下代码以除去任何等于0:

removal = group[group.Sum != 0] 

或者下面的代码来除去任何小于5:

removal = group[group['Sum'] >= 5] 

这解决了我的问题,因为“INF”是的总和列依赖于0 - 通过消除一个我摆脱这两个

相关问题