Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件删除熊猫组_Python_Pandas_Filter - Fatal编程技术网

Python 根据条件删除熊猫组

Python 根据条件删除熊猫组,python,pandas,filter,Python,Pandas,Filter,我有一个包含多个组的pandas数据框架,我想排除一些不满足某些条件(在特定列中)的组。例如,此处删除B组,因为“crit1”列中有非数字值 我可以根据条件df.loc[:,(df>

我有一个包含多个组的pandas数据框架,我想排除一些不满足某些条件(在特定列中)的组。例如,此处删除B组,因为“crit1”列中有非数字值

我可以根据条件
df.loc[:,(df><0.any(axis=0)]
删除特定的列,但它不会删除整个组

不知何故,我无法迈出下一步,将此应用于整个团队

name    crit1   crit2
A       0.3     4
A       0.7     6
B       inf     4
B       0.4     3 
因此,此筛选(仅允许浮动)后的结果应为:

A     0.3     4
A     0.7     6

您可以使用
groupby
filter
,例如,您可以检查组中是否存在
np.inf
,并在以下条件下使用
filter

import pandas as pd
import numpy as np
df.groupby('name').filter(lambda g: (g != np.inf).all().all())
#   name   crit1    crit2
# 0    A     0.3        4
# 1    A     0.7        6
如果谓词仅适用于一列,则可以通过
g.
访问该列,例如:

df.groupby('name').filter(lambda g: (g.crit1 != np.inf).all())
#   name   crit1    crit2
# 0    A     0.3        4
# 1    A     0.7        6

首先非常感谢您的快速回复!如果我只想将筛选应用于一个特定列(因为在其他列中我不关心'inf'…),我必须调整.all()的值吗?是的。您可以在lambda函数中指定列,请参见更新的答案。好的,这是我想象的,但是我对python还是太陌生了,自己找不到它,非常感谢!