删除符合Pandas中某些数字标准的行(Python 3)

时间:2014-08-27 14:28:07

标签: python pandas

现在,我的代码会导出一个类似于

的CSV
 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

我试图用NaN替换所有的“inf”,然后使用Pandas函数删除它们,但这似乎不起作用(可能做错了)。我已经读过.filter函数可能是我正在寻找但仍然不确定。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

基于我上面提供的代码,这个答案很简单,因为使用以下代码删除任何等于0的内容:

removal = group[group.Sum != 0]

或以下代码删除少于5的任何内容:

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

这解决了我的问题,因为" inf"取决于总和列中的0 - 通过删除一个我摆脱了两个