2012-07-23 4 views
9

indexpandas.DataFrameの整数インデックスでは、エレガントな方法が見つからないようです。 次の例では、'A'列の最初の要素から値 'a'を取得します。整数によるパンダのデータフレームへのインデックス付け

import pandas 
df = pandas.DataFrame(
    {'A':['a','b', 'c'], 'B':['f', 'g', 'h']}, 
    index=[10,20,30] 
    ) 

私は'a'を返すためにdf['A'].ix[0]df['A'][10]の両方を期待します。 df['A'][10]'a'を返しますが、df['A'].ix[0]KeyError: 0をスローします。インデックス0に基づいて値'a'を得るために私が考えることができる唯一の方法は、以下のアプローチを使用することです。

df['A'][df['A'].index[0]] 

データフレームの外に'a'を取得するための短い方の方法は、0のインデックスを使用して、ありますか?パンダ0.11のよう

更新

index by integerする別の方法があります。このsupersedesirowアプローチ

df.iloc[0] # integer based, gives the first row 
df.loc[10] # label based, gives the row with label 10 

答えて

12

あなたはあなたのインデックスは0から開始しないので、それは10から始まるあなたは正しいことで、次の

df['A'].ix[10] 
df['A'].irow(0) 

最初の用途のいずれかで必要な値を得ることができますdf['A'].ix[0]でエラーが出ますインデックス。 2番目のコマンドは、私が思うところでは、インデックス値ではなく行番号で値を見つけ、技術的にはdf['A'].ix[0]が働いた場合よりも2文字だけ長くなります。

df2=df.reset_index() 

これは、列にそれらを移動することによって、古いインデックス(10、20、など)を保存します:彼らはあなたがdf['A'].ix[0]のために期待する方法を応答しますように

代わりに、インデックスをリセットすることができますdf2データフレームでは「インデックス」と呼ばれます。その後、df2['A'].ix[0]は 'a'を返します。古い10ベースのインデックスを削除する場合は、reset_index関数のかっこ内にフラグdrop=Trueを挿入できます。

+0

'df ['A']'は 'irow'を持たない' Series'なので、 'df ['A'] .iget(0)'だと思います。 – Eike

+3

irow()は推奨されていません。位置ベースの索引作成にはiloc []を使用します。 – herrlich10

0

最新のpandasバージョンでは、df ["A"]。iat(0)も使用できます。

関連する問題