繁体   English   中英

Pandas-如何通过对多个列值进行正则表达式比较来过滤数据框

[英]Pandas - how to filter dataframe by regex comparisons on mutliple column values

我有一个如下数据框,其中所有内容都格式化为字符串:

df
  property  value  count
0   propAb   True     10
1   propAA  False     10
2   propAB   blah     10
3   propBb      3      8
4   propBA      4      7
5   propCa    100      4

我试图找到一种方法,通过将一系列正则表达式样式的规则应用于属性和值列,来筛选数据框。

例如,一些示例规则可能如下所示:

  • “如果属性以'propA'开头并且值不是'True',则删除该行”。

另一个规则可能是更数学的东西,例如:

  • “如果属性以'propB'开头且值<4,则删除该行”。

有没有一种方法可以完成这样的事情而不必每次都对我要应用的每个规则都遍历所有行?

您仍然必须应用每个规则(还有其他规则),但是让熊猫来处理行。 另外,不要删除不喜欢的行,而要保留行。 这是如何应用前两个规则的示例:

rule1 = df.property.str.startswith('propA') & (df.value != 'True')
df = df[~rule1] # Keep everything that does NOT match
rule2 = df.property.str.startswith('propB') & (df.value < 4)
df = df[~rule2] # Keep everything that does NOT match

顺便说一句,第二个规则将不起作用,因为value不是数字列。

对于第一个:

df = df.drop(df[(df.property.startswith('propA')) & (df.value is not True)].index)

另一个:

df = df.drop(df[(df.property.startswith('propB')) & (df.value < 4)].index)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM