在Python/Pandas中使用正则表达式操作符有条件地计算数据项
使用Python中的pandas库,我的代码中有一个如下所示的设备:在Python/Pandas中使用正则表达式操作符有条件地计算数据项,python,regex,pandas,logical-operators,Python,Regex,Pandas,Logical Operators,使用Python中的pandas库,我的代码中有一个如下所示的设备: BadData = len(df[df.A1.str.contains('A|T|C|G')==False]) 这里我要做的是计算数据帧df的A1列中不包含字母A、T、C和G的任何组合的条目数 这些表达式应计为BadData: 123 您可以使用: df['A1'].str.contains('^[ACTG]+$') 它确保它以ACTG中的字母开头(regex^)和结尾(regex$),并且只包含一个或多个字符 要获得l
BadData = len(df[df.A1.str.contains('A|T|C|G')==False])
这里我要做的是计算数据帧df
的A1
列中不包含字母A、T、C和G的任何组合的条目数
这些表达式应计为BadData
:
- 123
- 您可以使用:
它确保它以df['A1'].str.contains('^[ACTG]+$')
中的字母开头(regexACTG
)和结尾(regex^
),并且只包含一个或多个字符 要获得$
,只需对len
值求和即可:False
这相当于:bad_data = sum(~df['A1'].str.contains('^[ACTG]+$'))
但我更喜欢读书 例如:bad_data = len(df[df.A1.str.contains('^[ACTG]+$')==False])
>>> df A1 0 Apple 1 Golfing 2 A 3 ATTC 4 ACGT 5 AxTCG 6 foo 7 % 8 ACT Golf GTC 9 ACT >>> df['A1'].str.contains('^[ACTG]+$') 0 False 1 False 2 True 3 True 4 True 5 False 6 False 7 False 8 False 9 True Name: A1, dtype: bool bad_data = sum(~df['A1'].str.contains('^[ACTG]+$')) # 6
优雅而直接的解决方案。谢谢!:)>>> df A1 0 Apple 1 Golfing 2 A 3 ATTC 4 ACGT 5 AxTCG 6 foo 7 % 8 ACT Golf GTC 9 ACT >>> df['A1'].str.contains('^[ACTG]+$') 0 False 1 False 2 True 3 True 4 True 5 False 6 False 7 False 8 False 9 True Name: A1, dtype: bool bad_data = sum(~df['A1'].str.contains('^[ACTG]+$')) # 6