私はPandas名前付きインデックスを持つDataFrameを持っています。DataFrame、列名、および他のいくつかのものを取り、一連の作業を行うコードから分離されたコードにそれを渡したいです。その列に関係します。この場合のみ強調したい列はインデックスですが、通常の列のようにインデックスを抽出できないため、このコードにインデックスのラベルを付けることはできません。たとえば、次のようにDataFrameを作成できます。
import pandas as pd, numpy as np
df=pd.DataFrame({'name':map(chr, range(97, 102)), 'id':range(10000,10005), 'value':np.random.randn(5)})
df.set_index('name', inplace=True)
結果は次のとおりです。
id value
name
a 10000 0.659710
b 10001 1.001821
c 10002 -0.197576
d 10003 -0.569181
e 10004 -0.882097
name
列にアクセスするにはどうすればよいですか?
print(df.index) # No problem
print(df['name']) # KeyError: u'name'
列の複製やインデックスの変更などの回避策があることは知っています。しかし、インデックスを他のすべてと同じように処理する何らかの形式の列アクセスなど、よりクリーンなものはありますか?
インデックスはパンダで特別な意味を持っています。特定の操作を最適化するために使用され、データのマージ/結合などのさまざまな方法で使用できます。したがって、選択を行います。
reset_index
を別の列として扱います。df.index
。この選択はできません。これは、基礎となるデータの構造と、データの分析方法に依存する必要があります。
データフレームインデックスの使用の詳細については、以下を参照してください。
reset_index
を使用する代わりに、インデックスを通常の列にコピーし、いくつかの作業を行ってから列を削除することもできます。次に例を示します。
df['tmp'] = df.index
# do stuff based on df['tmp']
del df['tmp']