Python 如何将数据帧的列解压为多个变量

Python 如何将数据帧的列解压为多个变量,python,pandas,syntactic-sugar,Python,Pandas,Syntactic Sugar,如果维度匹配,列表或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] 如何为数据帧的列实现类似的行为?扩展上述示例: import pandas as pd df = pd.DataFrame([[1,2,3],[4,5,6]]) df.c

如果维度匹配,列表或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]
如何为数据帧的列实现类似的行为?扩展上述示例:

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']

pandas中是否已提供功能
unpack
?或者可以简单地模仿它吗?

我只是觉得下面的方法很有效,这已经接近我想要实现的目标了:

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

不知道为什么,因为如果你不喜欢
[]
,你可以直接使用它,而且它不是一个与df方法冲突的名称,所以点属性方法将使用
df.a
(等)来访问它们,但是你是在:
a,b,c=df['a'],df['b'],df['c']
?实际上不是,因为我不想为列名操心。对于解包,我指的是与中描述的相同的事情,但我不明白为什么您要解包,而不是直接访问dataframe对象本身的名称。。。除了可能不必要地使df中的列保持活动状态的另一个引用之外,
a=df.a
仅使用
df.a
能让您克服什么?如果您真的需要,您可以访问
df.values
,它将为您提供基本的numpy数组…不,这很好…:)从0.24.0版开始,您还可以执行
a、b、c=df.T.to_numpy()