web-dev-qa-db-de.com

Spaltenwert basierend auf einer anderen Spalte extrahieren pandas dataframe

Ich bin irgendwie festgefahren, den Wert einer Variablen zu extrahieren, die auf eine andere Variable konditioniert. Zum Beispiel der folgende Datenrahmen:

A  B
p1 1
p1 2
p3 3
p2 4

Wie kann ich den Wert von A erhalten, wenn B=3? Jedes Mal, wenn ich den Wert von A extrahierte, erhielt ich ein Objekt, keine Zeichenfolge.

72
Anderson Zhu

Sie könnten loc verwenden, um Reihen zu erhalten, die Ihre Bedingung erfüllen, und dann iloc , um das erste Element zu erhalten:

In [2]: df
Out[2]:
    A  B
0  p1  1
1  p1  2
2  p3  3
3  p2  4

In [3]: df.loc[df['B'] == 3, 'A']
Out[3]:
2    p3
Name: A, dtype: object

In [4]: df.loc[df['B'] == 3, 'A'].iloc[0]
Out[4]: 'p3'
117

df[df['B']==3]['A'], vorausgesetzt df ist dein pandas.DataFrame.

24
emited

Sie können query ausprobieren, was weniger Eingabe ist:

df.query('B==3')['A']
21
PhilChang

Verwenden df[df['B']==3]['A'].values wenn Sie nur den Artikel selbst ohne die Klammern wollen

2
Baz