gpt4 book ai didi

python - 在 Python/Pandas 中使用正则表达式运算符有条件地计算数据条目数

转载 作者:行者123 更新时间:2023-12-01 08:49:11 24 4
gpt4 key购买 nike

使用 Python 中的 pandas 库,我的代码中有一个如下所示的设备:

BadData = len(df[df.A1.str.contains('A|T|C|G')==False])

我在这里想做的是计算数据帧dfA1列中包含的条目数字母 A、T、C 和 G 的任意组合。

这些表达式应计为 BadData:

  • 123
  • <%*&

但是这些表达式不应该:

  • 一个
  • ATCG
  • 加特卡塔

我的问题:如何使用正则表达式字符在 中包含“Apple”或“Golfing”等条目坏数据

我可以像这样将条件链接在一起:

BadData = len(df[(df.A1.str.contains('A|T|C|G')==False) & (df.A1.str.contains('0|1|2|3')==TRUE)])

但是这里我面临一个困难:我是否必须定义每个违反条件的字符?这看起来很笨拙,我相信有一种更优雅的方法。

最佳答案

您可以使用:

df['A1'].str.contains('^[ACTG]+$')

这确保它以 ACTG 中的字母开始(正则表达式 ^)和结束(正则表达式 $),并且仅包含一个或多个这些字符。

要获取 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

关于python - 在 Python/Pandas 中使用正则表达式运算符有条件地计算数据条目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com