Es gibt ein paar Probleme mit dem, was Sie haben. Hauptsächlich machen Sie Ihre Funktion nicht richtig, und Sie versuchen, die Zeichenfolge "val" aufzurufen, nicht die Variable val
in Ihrer Gleichheit. Versuchen Sie folgendes:
data = {'cat' : ['A', 'B', 'C', 'D'], 'dog' : ['e', 'f', 'g', 'h']}
df = pd.DataFrame(data)
print(df)
def splitter(df, val):
return df[df['cat'] == val]
val = 'A'
df_subset = splitter(df, val)
Dies lässt Sie mit zwei Datenrahmen:
>df
cat dog
0 A e
1 B f
2 C g
3 D h
>df_subset
cat dog
0 A e
Es gibt eigentlich keine Notwendigkeit für eine Funktion, das zu tun, aber ich habe es dort, damit Sie sehen können, wie die Funktion arbeitet. Beachten Sie insbesondere, dass Sie outval
nicht darin eingeben, wenn Sie möchten, dass es zurückgegeben wird.
Einige andere Seite Hinweise:
Dataframes aus einem Wörterbuch mit den Werten als Listen erstellt werden, so gibt es keine Notwendigkeit Series
zu nennen.
Benennen Sie Ihr Dataframe-Objekt nicht mit den Datenspalten, auf die Sie sich beziehen (in diesem Fall "Katze"), weil es nur verwirrend ist. Wenn Sie nur mit einem Datenrahmen arbeiten, verwenden Sie die Konvention df
.
Anstatt eine Splitter-Funktion zu machen, können Sie für etwas so einfach tun: df_subset = df[df['cat'] == val]
, es sei denn, dies war nur ein Spielzeug-Beispiel und mehr muss natürlich innerhalb der Funktion passieren.
danke, aber ich möchte den Datenrahmen dynamisch erstellen, so dass ich nicht 'Cata' oder 'Catb' eingeben muss, aber die Werte 'A' und 'B' werden automatisch zu CAT'A 'oder CAT'B durchgeleitet '.. – tezzaaa