2024-10-05 14:29:08 发布
网友
aps1_risk.head() Out[33]: ID class S3 S22 S23 S26_3 S28 S29 0 1 1 45698 1012 268 287230 0 10 1 2 0 0 0 0 154298 86 454 2 3 0 228 358 110 254892 128 202
在这个给定的数据集中,我需要删除class=1,if任何其他变量=0的所有行。我曾想过使用if-else条件,但有更简单的替代方法吗?任何帮助都将不胜感激。谢谢
使用^{}:
df = aps1_risk[aps1_risk.drop('class', 1).ne(0).all(1) | aps1_risk['class'].ne(1)]
通过~反转最终掩模的替代解决方案:
~
df = df[~(df.drop('class', 1).eq(0).any(1) & df['class'].eq(1))]
print (df) ID class S3 S22 S23 S26_3 S28 S29 1 2 0 0 0 0 154298 86 454 2 3 0 228 358 110 254892 128 202
详细信息:
比较不带class的所有列,如果不等于0,则按^{}对行的每个值进行比较:
class
0
print (df.drop('class', 1).ne(0).all(1)) 0 False 1 False 2 True dtype: bool
如果列不相等1,则比较列:
1
print (df['class'].ne(1)) 0 False 1 True 2 True Name: class, dtype: bool
和链条件一起:
print (df.drop('class', 1).ne(0).all(1) | df['class'].ne(1)) 0 False 1 True 2 True dtype: bool
所以它会过滤Trues:
True
df = aps1_risk[aps1_risk.drop('class', 1).ne(0).all(1) | aps1_risk['class'].ne(1)] print (df) ID class S3 S22 S23 S26_3 S28 S29 1 2 0 0 0 0 154298 86 454 2 3 0 228 358 110 254892 128 202
Pandas允许您使用非常简单的选择语法,如下所示:
aps1_risk = aps1_risk[aps1_risk['class'] != 1]
或者,您也可以像下面这样编写更复杂的查询:
aps1_risk = aps1_risk[(aps1_risk['class'] != 1) | (aps1_risk.drop('class', 1) == 0)]
使用^{} :
通过
~
反转最终掩模的替代解决方案:详细信息:
比较不带} 对行的每个值进行比较:
class
的所有列,如果不等于0
,则按^{如果列不相等
1
,则比较列:和链条件一起:
所以它会过滤
True
s:Pandas允许您使用非常简单的选择语法,如下所示:
或者,您也可以像下面这样编写更复杂的查询:
相关问题 更多 >
编程相关推荐