1322 Stimmen

Verwenden Sie eine Liste von Werten, um Zeilen aus einem Pandas-Datenframe auszuwählen

Nehmen wir an, ich habe den folgenden Pandas-Datenrahmen:

df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]})
df

     A   B
0    5   1
1    6   2
2    3   3
3    4   5

Ich kann eine Untergruppe auf der Grundlage eines bestimmten Wertes bilden:

x = df[df['A'] == 3]
x

     A   B
2    3   3

Aber wie kann ich eine Untergruppe auf der Grundlage einer Liste von Werten bilden? - etwas wie dies:

list_of_values = [3,6]

y = df[df['A'] in list_of_values]

Zu bekommen:

     A    B
1    6    2
2    3    3

4voto

fuwiak Punkte 621

Schwieriger wird es bei f-Strings

list_of_values = [3,6]

df.query(f'A in {list_of_values}')

3voto

bart-kosmala Punkte 901

Die obigen Antworten sind richtig, aber wenn Sie immer noch nicht in der Lage sind, Zeilen wie erwartet herauszufiltern, stellen Sie sicher, dass die Spalten beider DataFrames die gleiche dtype .

source = source.astype({1: 'int64'})
to_rem = to_rem.astype({'some col': 'int64'})

works = source[~source[1].isin(to_rem['some col'])]

Ich habe lange genug gebraucht.

1voto

KArrow'sBest Punkte 130

Eine Lösung ohne Pandas, die in Bezug auf die Geschwindigkeit vergleichbar ist, könnte sein:

filtered_column = set(df.A) - set(list_list_of_values)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X