web-dev-qa-db-ja.com

pandas DataFrameの列を複数の変数に解凍する方法

次元が一致する場合、リストまたはnumpy配列を複数の変数に解凍できます。 3xNアレイの場合、以下が機能します。

import numpy as np 
a,b =          [[1,2,3],[4,5,6]]
a,b = np.array([[1,2,3],[4,5,6]])
# result: a=[1,2,3],   b=[4,5,6]

A pandas DataFrameの列に対して同様の動作を実現するにはどうすればよいですか?上記の例を拡張します。

import pandas as pd 
df = pd.DataFrame([[1,2,3],[4,5,6]])
df.columns = ['A','B','C']    # Rename cols and
df.index = ['i', 'ii']        # rows for clarity

以下は期待どおりに機能しません。

a,b = df.T
# result: a='i',   b='ii'
a,b,c = df
# result: a='A',   b='B',   c='C'

しかし、私が取得したいのは次のとおりです。

a,b,c = unpack(df)
result: a=df['A'], b=df['B'], c=df['C']

関数unpackはすでにパンダで利用できますか?それとも簡単な方法で模倣できますか?

6
normanius

私はちょうど私が達成しようとしていることにすでに近い次の作品を見つけました:

a,b,c = df.T.values 
# pd.DataFrame.as_matrix() is deprecated
8
normanius