DataFrame
パンダ全体に適用される関数の行のインデックスにアクセスしようとしています。私はこのようなものを持っています:
df = pandas.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
>>> df
a b c
0 1 2 3
1 4 5 6
与えられた行の要素にアクセスする関数を定義します
def rowFunc(row):
return row['a'] + row['b'] * row['c']
次のように適用できます:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
驚くばかり!次に、インデックスを関数に組み込みたい場合はどうなりますか?これDataFrame
を追加d
する前のこの行のインデックスはIndex([u'a', u'b', u'c', u'd'], dtype='object')
になりますが、0と1が必要なので、単にアクセスすることはできませんrow.index
。
インデックスを格納するテーブルに一時的な列を作成できることはわかっていますが、それが行オブジェクトのどこかに格納されているのかどうか疑問に思っています。
@DSM実際には、異なる行要素を使用して各行の別のオブジェクトコンストラクターを呼び出しています。私は質問を説明するために最小限の例を組み合わせたかっただけです。
—
マイク
apply
か?フレーム自体でベクトル化された操作を実行するよりもはるかに低速です。(時々、適用は何かを行う最も簡単な方法であり、パフォーマンスの考慮はしばしば誇張されますが、特定の例ではそれを使用しないのと同じくらい簡単です。)