Mit Regex-Operatoren in Python / Pandas Dateneinträge Bedingtes an Graf

stimmen
1

Mit Hilfe der Pandas Bibliothek in Python, ich habe ein Gerät in meinem Code, der wie folgt aussieht:

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

Was ich versuche , hier zu tun ist , um die Anzahl der Einträge in der Zählung A1Spalte des Datenrahmen , dfdie nicht noch die Kombination der Buchstaben enthalten A, T, C und G.

Diese Ausdrücke sollen gezählt werden wie BadData:

  • 123
  • <% * &
  • foo

Aber diese Ausdrücke sollten nicht:

  • EIN
  • ATCG
  • GATCATTA

Meine Frage : Wie kann ich regex Zeichen verwenden , um Einträge wie „enthalten A pple“ oder „ G olfing“ in BadData?

Ich konnte Kette zusammen Bedingungen wie folgt:

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

Aber hier begegne ich eine Schwierigkeit: muss ich jedes Zeichen definieren, die die Bedingung verletzt? Dies scheint ungeschickt, und ich bin sicher, es ist ein eleganter Weg.

Veröffentlicht am 08/11/2018 um 00:01
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Sie können:

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

Die dafür sorgt , dass es beide beginnen (die Regex ^) und endet (die Regex $) mit einem Buchstaben in ACTGund nur eine oder mehr diesen Zeichen enthalten.

Um das lenkönnen Sie nur die Summe FalseWerte:

bad_data = sum(~df['A1'].str.contains('^[ACTG]+$'))

Das ist äquivalent zu:

bad_data = len(df[df.A1.str.contains('^[ACTG]+$')==False])

Aber IMO schöner zu lesen.

Zum Beispiel:

>>> 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
Beantwortet am 08/11/2018 um 00:08
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more