답변:
행이 하나만있는 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 데이터 프레임을 numpy 배열로 변환 한 다음 해당 배열의 첫 번째 유일한 값에 액세스 할 수 있습니다.
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')
1 개 이상의 행이 필터링 된 경우 첫 번째 행 값을 확보하십시오. 필터로 인해 데이터 프레임이 비어 있으면 예외가 발생합니다.
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
열 이름을 기준으로 값을 얻을 수 없습니다.
이것이 좋은 습관인지 확실하지 않지만 시리즈를로 캐스팅하여 가치를 얻을 수 있음을 알았습니다 float
.
예 :
rate
3 0.042679
이름 : 실업률, dtype : float64
float(rate)
0.0426789
복잡 할 필요는 없습니다.
val = df.loc[df.wd==1, 'col_name'].values[0]
df_gdp.columns
색인 ([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
확인할 수 있습니다 .