2016-03-24 18 views
15

私はデータフレームを作成し、インデックスを設定していますPandas DataFrameからインデックス値で行を取得するにはどうすればよいですか?

df = pd.DataFrame(np.random.randn(8, 4),columns=['A', 'B', 'C', 'D']) 
df = df.set_index('A') 

データフレームは、次のようになります。

    B   C   D 
A 
0.687263 -1.700568 0.140175 1.420394 
-0.212621 -0.700442 -0.041497 -1.034021 
-0.614214 -0.437313 -0.464493 -1.182492 
-0.885062 0.203892 -0.412400 -0.578346 
-1.222661 2.014908 -0.463674 -0.378910 
0.132472 -0.389512 0.623531 -0.788556 
-1.083620 1.167158 -0.558217 -0.222078 
1.066270 -0.215586 -0.884757 -0.878557 

にはどうすればA0.687263された行のBの値を得るのですか?

私が試した:

e = df.loc(0.687263) 

これは、むしろ私が(また、私は可能であれば、それは単一の行であることを指定したいのですが)期待する行よりも、私にLocIndexerオブジェクトを与えます:

<pandas.core.indexing._LocIndexer object at 0x10385e210> 

もし今私が試してみたらe['B']私はエラーになります。

Bの値はどのようにして取得できますか?

答えて

15

パンダは、データフレームを印刷するときに値を丸めます。あなたは上のインデックスにしようとしている実際の値は次のとおりです。私が見る

1.764052345967664

import pandas as pd 
import numpy as np 

np.random.seed(0) 
df = pd.DataFrame(np.random.randn(8, 4),columns=['A', 'B', 'C', 'D']) 

df = df.set_index('A') 
print df 


        B   C   D 
A          
1.764052 0.400157 0.978738 2.240893 
1.867558 -0.977278 0.950088 -0.151357 
-0.103219 0.410599 0.144044 1.454274 
0.761038 0.121675 0.443863 0.333674 
1.494079 -0.205158 0.313068 -0.854096 
-2.552990 0.653619 0.864436 -0.742165 
2.269755 -1.454366 0.045759 -0.187184 
1.532779 1.469359 0.154947 0.378163 


df.loc[1.764052345967664] 
Out[32]: 
B 0.400157 
C 0.978738 
D 2.240893 
Name: 1.76405234597, dtype: float64 
+7

ああ - 私はそれが私の問題だった、 '.LOC(X)'ない 'の.loc [X]を'使用していました。ありがとう! – Richard

+5

@リチャードこれは、質問の問題を解決するので、コメントではなく答えでなければなりません。 – Bastien