回答:
行が1つだけのDataFrameがある場合は、最初の(のみ)行にSeriesとしてアクセスし、次にiloc
列名を使用して値にアクセスします。
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
at
本当にいい答えですが、奇妙なのはix
:) のようなものです)
my_df.loc[my_df['Col1'] == foo]['Col2']
それでもタイプのオブジェクトを返す<class 'pandas.core.series.Series'>
これらはスカラーへの高速アクセスです
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
.iloc[-1]['A']
、あなたが行うことができないat[-1,'A']
最後の行エントリを取得する
at[df.index[-1],'A']
1x1データフレームを派手な配列にして、その配列の最初で唯一の値にアクセスできます。
val = d2['col_name'].values[0]
.get_values()[0]
。
パンダ10.1 / 13.1以降の変更のようです
ilocが利用できなくなる前に10.1から13.1にアップグレードしました。
13.1ではiloc[0]['label']
、スカラーではなく単一の値の配列を取得します。
このような:
lastprice=stock.iloc[-1]['Close']
出力:
date
2014-02-26 118.2
name:Close, dtype: float64
私が見つけた最も速い/最も簡単なオプションは次のとおりです。501は行インデックスを表します。
df.at[501,'column_name']
df.get_value(501,'column_name')
get_value
は非推奨になりました(v0.21.0 RC1(2017年10月13日))参照はこちら .get_value and .set_value on Series, DataFrame, Panel, SparseSeries, and SparseDataFrame are deprecated in favor of using .iat[] or .at[] accessors (GH15269)
パンダ0.10の場合、iloc
は使用不可です。aをフィルターに掛けて、DF
列の最初の行のデータを取得しますVALUE
。
df_filt = df[df['C1'] == C1val & df['C2'] == C2val]
result = df_filt.get_value(df_filt.index[0],'VALUE')
フィルタリングされた行が複数ある場合は、最初の行の値を取得します。フィルターの結果、データフレームが空になる場合は、例外があります。
get_value
は現在非推奨です(v0.21.0 RC1(2017年10月13日))参照はこちら .get_value and .set_value on Series, DataFrame, Panel, SparseSeries, and SparseDataFrame are deprecated in favor of using .iat[] or .at[] accessors (GH15269)
iat
またはat
カラム名に基づいて値を取得することはできません。
複雑にする必要はありません。
val = df.loc[df.wd==1, 'col_name'].values[0]
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
SettingWithCopyWarning
場合は、この投稿で警告の説明と考えられる回避策/解決策を確認できます。