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?

36voto

Natacha Punkte 1001

Ich benötigte den Wert einer Zelle, der durch Spalten- und Indexnamen ausgewählt wurde. Diese Lösung hat für mich funktioniert:

df.loc[1,:].values[0]

26voto

timeislove Punkte 1075

Es sieht so aus, als ob Änderungen nach pandas 10.1 oder 13.1 stattgefunden haben.

Ich habe von 10.1 auf 13.1 aktualisiert. Vorher war iloc nicht verfügbar.

Jetzt, mit 13.1, erhält iloc[0]['label'] ein eindimensionales Array anstatt eines Skalars.

So wie hier:

lastprice = stock.iloc[-1]['Close']

Ausgabe:

date
2014-02-26 118.2
name:Close, dtype: float64

19voto

jroakes Punkte 349

Die schnellsten und einfachsten Optionen, die ich gefunden habe, sind folgende. 501 repräsentiert den Zeilenindex.

df.at[501, 'column_name']
df.get_value(501, 'column_name')

14voto

Daniel Gonçalves Punkte 176

In späteren Versionen können Sie dies ganz einfach beheben, indem Sie Folgendes tun:

val = float(d2['col_name'].iloc[0])

9voto

Su Tingxuan Punkte 129
df_gdp.columns

Index([u'Country', u'Country Code', u'Indicator Name', u'Indicator Code', u'1960', u'1961', u'1962', u'1963', u'1964', u'1965', u'1966', u'1967', u'1968', u'1969', u'1970', u'1971', u'1972', u'1973', u'1974', u'1975', u'1976', u'1977', u'1978', u'1979', u'1980', u'1981', u'1982', u'1983', u'1984', u'1985', u'1986', u'1987', u'1988', u'1989', u'1990', u'1991', u'1992', u'1993', u'1994', u'1995', u'1996', u'1997', u'1998', u'1999', u'2000', u'2001', u'2002', u'2003', u'2004', u'2005', u'2006', u'2007', u'2008', u'2009', u'2010', u'2011', u'2012', u'2013', u'2014', u'2015', u'2016'], dtype='object')

df_gdp[df_gdp["Country Code"] == "USA"]["1996"].values[0]

8100000000000.0

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