2017-07-27 7 views
4

これは非常に簡単な質問ですが、データフレームから単一のロケーション値を取得するには、あまりにも多くの操作を行っていました。私に説明させてください:データフレームからロケーションの値だけを返す最も簡単な方法

import pandas as pd 
df = pd.DataFrame(list(zip('abcde', 'rithf')), columns=['a', 'b']) 
df 
Out[23]: 
    a b 
0 a r 
1 b i 
2 c t 
3 d h 
4 e f 

column a == aのカラムbの値を抽出しようとしています。非常に単純ですが.locを使用すると、これを返します:

df.loc[df.a == 'a', 'b'] 
Out[24]: 
0 r 
Name: b, dtype: object 

は、値が非常に汚れ取得:あなたは、正確なインデックスを知っているとき

df.loc[df.a == 'a', 'b'].values[0] 
Out[26]: 
'r' 

、それは実際には値を返します。

df.loc[0, 'b'] 
Out[27]: 
'r' 

しかし、明らかにインデクサが必要です。

ので質問は、あるだけでなくaseries

答えて

2

あなたはSeries.itemを使用することができ、実際の値を返す任意のセクシーな方法df.loc[df.a == 'a', 'b'].values[0]があります:

print(df.loc[df.a == 'a', 'b'].item()) 
r 
+1

感謝。それを知らなかった。 –

1

あなたのように試合を取得するためにargmaxを使用することができますスカラーその後、.loc使用 - もちろん

df.loc[(df.a=='a').argmax(),'b'] 

、それは我々がそので試合を持っていることを前提としていカラム。

サンプル実行 -

In [346]: df 
Out[346]: 
    a b 
0 a r 
1 b i 
2 c t 
3 d h 
4 e f 

In [347]: (df.a=='a').argmax() # row indexer 
Out[347]: 0 

In [348]: df.loc[(df.a=='a').argmax(),'b'] 
Out[348]: 'r' 
+0

@Divakarありがとうございました、ハックしてもうまく動作します –

関連する問題