Seite 1 von 1

Überprüfung ob String in df Spalte enthalten ist

Verfasst: Mittwoch 21. Oktober 2020, 20:15
von Schokomuffin
Hallo :)

Ich hätte eine ziemliche Anfängerfrage zum Arbeiten mit Dataframes.

Und zwar würde ich einmal gerne eine Spalte darauf überprüfen, ob ein gewisser String enthalten ist.
Das heißt nicht, dass eine Zelle dieser Spalte genau diesen String enthalten soll, dann könnte man ja == verwenden,
sondern der String soll zum Beispiel Teil eines Names sein und kann in mehreren Zeilen vorkommen.
Als Beispiel:
Ich habe ein Attribut "Hunderterzahlen" und darunter sind 300 Zeilen aufgelistet in denen immer eine Reihenfolge von 3 Zahlen steht.
Mein Ziel ist es jetzt die Anzahl der Reihen herauszufinden, die die Zahl 5 enthalten. (Egal, wie häufig sie in einem Feld vorkommt oder an welcher Stelle sie steht). Ich will nur die Anzahl der Rows mit diesem Integerinhalt "5" wissen.

Meine bisherige Idee:

Code: Alles auswählen

df = pd.read_csv('Zahlenketten.csv',sep=',')

Fünferliste = list()

if df.Hunderterzahlen contain 5:
    Fünferliste.append()
    
print(len(Fünferliste))

Ich weiß, dass mein Fehler wahrscheinlich an dem "contain" liegt.
Allerdings weiß ich leider keinen Ersatz.
Oder ist mein Ansatz vielleicht voll und ganz falsch und es gibt eine Pandafunktion, die Strings aus Dataframespalten herauslesen kann, womit ich vielleicht einen neuen Dataframe erstellen könnte...

Re: Überprüfung ob String in df Spalte enthalten ist

Verfasst: Mittwoch 21. Oktober 2020, 20:46
von Sirius3
Man kann nicht einfach Syntax erfinden, sondern muß in der Dokumentation nachschauen, welche Methode denn für das Problem die richtige wäre, und falls nicht, muß man das Problem solange in Teilproblem unterteilen, bis es einfach lösbar ist.
Wenn Du eine Spalte mit Strings hast, kannst Du über df.Hunderterzahlen.str auf Stringmethoden zugreifen, wo es unter anderem auch eine contains-Methode gibt.

Re: Überprüfung ob String in df Spalte enthalten ist

Verfasst: Mittwoch 21. Oktober 2020, 21:05
von Schokomuffin
@Sirius3

Achso, klar!

Danke, ich habs. :D