Wenn Sie Zeilen des Datenrahmens auf der Grundlage einer komplizierten Bedingung für den Spaltenwert löschen möchten, kann das Schreiben in der oben gezeigten Weise kompliziert sein. Ich habe die folgende einfachere Lösung, die immer funktioniert. Nehmen wir an, dass Sie die Spalte mit der Überschrift löschen wollen, also holen Sie sich diese Spalte zuerst in einer Liste.
text_data = df['name'].tolist()
Wenden Sie nun eine Funktion auf jedes Element der Liste an und fügen Sie diese in eine Pandareihe ein:
text_length = pd.Series([func(t) for t in text_data])
In meinem Fall habe ich nur versucht, die Anzahl der Token zu ermitteln:
text_length = pd.Series([len(t.split()) for t in text_data])
Fügen Sie nun eine zusätzliche Spalte mit den oben genannten Reihen in den Datenrahmen ein:
df = df.assign(text_length = text_length .values)
Jetzt können wir eine Bedingung auf die neue Spalte anwenden, wie zum Beispiel:
df = df[df.text_length > 10]
def pass_filter(df, label, length, pass_type):
text_data = df[label].tolist()
text_length = pd.Series([len(t.split()) for t in text_data])
df = df.assign(text_length = text_length .values)
if pass_type == 'high':
df = df[df.text_length > length]
if pass_type == 'low':
df = df[df.text_length < length]
df = df.drop(columns=['text_length'])
return df