745 Stimmen

Wie kann ich den Wert aus einer Zelle eines Dataframes erhalten?

Ich habe eine Bedingung erstellt, die genau eine Zeile aus meinem DataFrame extrahiert:

d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]

Jetzt möchte ich einen Wert aus einer bestimmten Spalte nehmen:

val = d2['col_name']

Aber als Ergebnis erhalte ich einen DataFrame, der eine Zeile und eine Spalte enthält (d.h. eine Zelle). Das ist nicht das, was ich brauche. Ich brauche einen Wert (eine Gleitkommazahl). Wie kann ich das in pandas machen?

827voto

Andy Hayden Punkte 324102

Wenn Sie ein DataFrame mit nur einer Zeile haben, greifen Sie auf die erste (einzige) Zeile als Serie zu, indem Sie iloc verwenden, und dann den Wert mit dem Spaltennamen abrufen:

In [3]: sub_df
Out[3]:
          A         B
2 -0.133653 -0.030854

In [4]: sub_df.iloc[0]
Out[4]:
A   -0.133653
B   -0.030854
Name: 2, dtype: float64

In [5]: sub_df.iloc[0]['A']
Out[5]: -0.13365288513107493

387voto

Jeff Punkte 123194

Dies sind schnelle Zugriffsmethoden für Skalare:

In [15]: df = pandas.DataFrame(numpy.random.randn(5, 3), columns=list('ABC'))

In [16]: df
Out[16]:
          A         B         C
0 -0.074172 -0.090626  0.038272
1 -0.128545  0.762088 -0.714816
2  0.201498 -0.734963  0.558397
3  1.563307 -1.186415  0.848246
4  0.205171  0.962514  0.037709

In [17]: df.iat[0, 0]
Out[17]: -0.074171888537611502

In [18]: df.at[0, 'A']
Out[18]: -0.074171888537611502

339voto

Guillaume Punkte 3461

Sie können Ihr 1x1-Datenframe in ein NumPy-Array umwandeln und dann auf den ersten und einzigen Wert dieses Arrays zugreifen:

val = d2['col_name'].values[0]

55voto

Eduardo Freitas Punkte 763

Es muss nicht kompliziert sein:

val = df.loc[df.wd==1, 'col_name'].values[0]

53voto

Shihe Zhang Punkte 2323

Die meisten Antworten verwenden iloc, was gut für die Auswahl nach Position ist.

Wenn Sie Auswahl nach Label benötigen, wäre loc praktischer.

Um einen Wert explizit zu erhalten (entspricht dem veralteten df.get_value('a','A'))

# Das entspricht auch df1.at['a','A']
In [55]: df1.loc['a', 'A']
Out[55]: 0.13200317033032932

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