11

整数インデックスでaにインデックスを付けるエレガントな方法を見つけることができないようです。pandas.DataFrame次の例では、列の最初の要素から値「a」を取得したいと考えてい'A'ます。

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

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

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

'a'0 インデックスを使用して、データフレームから抜け出すためのより短い方法はありますか?

アップデート

pandas 0.11 以降、整数でインデックスを付ける別の方法があります。

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

これはアプローチに取って代わります。irow

4

2 に答える 2

14

df['A'].ix[0]インデックス作成が 0 から開始されず、10 から開始されるため、エラーが発生します。次のいずれかを使用して、必要な値を取得できます。

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

最初は正しいインデックスで使用します。2番目のコマンドは、あなたが望むものだと思いますが、インデックス値ではなく行番号で値を見つけます。技術的には、機能した場合よりも2文字だけ長くなりdf['A'].ix[0]ます。

または、インデックスをリセットして、期待どおりに応答するようにすることもできますdf['A'].ix[0]

df2=df.reset_index()

これにより、古いインデックス (10、20 など) が df2 データ フレームの "index" という列に移動されて保持されます。次にdf2['A'].ix[0]、「a」を返します。古い 10 ベースのインデックスを削除する場合drop=Trueは、reset_index 関数の括弧内にフラグを挿入できます。

于 2012-07-24T00:38:29.687 に答える