2016-04-18 20 views
24

Ich bin irgendwie stecken auf Extrahieren von Wert einer variablen Konditionierung auf eine andere Variable. Zum Beispiel kann der folgende Datenrahmen:extrahieren Spaltenwert basierend auf einer anderen Spalte Pandas Datenframe

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, bekam ich ein Objekt, keine Zeichenfolge.

+0

Ich sehe, ich sollte am Ende 'item()' hinzufügen. –

Antwort

34

könnten Sie loc verwenden Serie zu erhalten, die Ihre Bedingung erfüllt, und dann iloc 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' 
+3

Danke für Ihre Hilfe. 'df.loc [df ['B'] == 3, 'A']. item()' funktioniert auch für mich. –

+0

df.loc [df ['B'] == 3, 'A'] [0] funktioniert auch – Myk

3

df[df['B']==3]['A'], vorausgesetzt, df ist Ihr Pandas.DataFrame.

4

Sie können query versuchen, die weniger Typisierung ist:

df.query('B==3')['A'] 
Verwandte Themen