[python] 데이터 프레임의 셀에서 값을 얻는 방법?

내 데이터 프레임에서 정확히 하나의 행을 추출하는 조건을 구성했습니다.

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

이제 특정 열에서 가치를 얻고 싶습니다.

val = d2['col_name']

그러나 결과적으로 하나의 행과 하나의 열 ( 즉, 하나의 셀) 을 포함하는 데이터 프레임을 얻습니다 . 내가 필요한 것이 아닙니다. 하나의 값 (하나의 부동 숫자)이 필요합니다. 팬더에서 어떻게 할 수 있습니까?



답변

행이 하나만있는 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


답변

스칼라에 대한 빠른 액세스

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


답변

1×1 데이터 프레임을 numpy 배열로 변환 한 다음 해당 배열의 첫 번째 유일한 값에 액세스 할 수 있습니다.

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


답변

대부분의 답변은 iloc위치별로 선택하기에 적합합니다.

레이블별로 선택 해야하는 경우 loc더 편리합니다.

명시 적으로 값을 얻으려면 (더 이상 사용되지 않는 df.get_value ( ‘a’, ‘A’)와 동일)

# this is also equivalent to df1.at['a','A']
In [55]: df1.loc['a', 'A']
Out[55]: 0.13200317033032932

답변

열과 색인 이름으로 선택된 하나의 셀 값이 필요했습니다. 이 솔루션은 저에게 효과적이었습니다.

original_conversion_frequency.loc[1,:].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')