Python 如何从pandas数据帧中提取值并将其放入numpy数组中?

Python 如何从pandas数据帧中提取值并将其放入numpy数组中?,python,pandas,Python,Pandas,我有多个pandas数据帧,我想写一个函数,将数据帧的每列中的值取出,并将它们放入自己的numpy数组中 示例数据帧 In [1]: df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B']) In [2]: df Out[2]: A B 0 1 2 1 1 3 2 4 6 如何从A列和B列中的值生成两个不同的numpy数组您可以使用此方法获取每列的numpy数组列表。您也可以将数组放入字典中,但

我有多个pandas数据帧,我想写一个函数,将数据帧的每列中的值取出,并将它们放入自己的numpy数组中

示例数据帧

In [1]: df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])
In [2]: df
Out[2]: 
    A  B
 0  1  2
 1  1  3
 2  4  6

如何从A列和B列中的值生成两个不同的numpy数组

您可以使用此方法获取每列的numpy数组列表。您也可以将数组放入字典中,但我更喜欢列表而不是前者,因为它是有序的,并且我们可以始终使用带有df.columns的zip函数来获取元组数据

np_arr_list = []
for i in df.columns:
    new_np_arr = np.array(df.loc[:,i])
    np_arr_list.append(new_np_arr)
输出:

[array([  1,  21, 213,  32], dtype=int64),
 array([ 4,  5, 32,  3], dtype=int64),
 array([213,  23,  23,   1], dtype=int64)]

df['A']。值将返回numpy数组。见下文:

for col in df.columns:
    print(col, type(df[col].values))
A <class 'numpy.ndarray'>
B <class 'numpy.ndarray'>
对于df.列中的列:
打印(列,类型(df[col].值))
A.
B

您应该使用
to\u numpy()
方法,因为其他方法将被弃用。如果您的
pandas
库的版本早于0.24,您应该首先更新它,因为此方法是在该版本之后出现的


只需使用
df.values
;这不是从整个数据帧中获取值吗?欢迎来到StackOverflow。请花点时间阅读这篇文章,以及如何提供答案,并相应地修改你的问题。这些提示可能也很有用。我编辑了我的问题。我还有其他方法可以改进吗?你的预期产量是多少?numpy阵列列表?谢谢您的帮助!您能再解释一下zip函数吗?zip()用于将元素打包到元组中,并遍历元组。在上面的代码之后尝试这两行<代码>对于zip(df.columns,np\u arr\u列表)中的(col\u name,np\u arr):
`print(“Column name:”,col\u name,“\nArray”,np\u arr,”\n)`它绑定col\u name以通过df.columns和np\u arr通过np\u arr\n列表进行迭代。在某些需要将数据和名称分开的用例中,我使用它来关联列名和值。另一种方法是使用一个字典,其中键作为列名,值作为numpy数组。我尝试使用它,但得到了一个错误AttributeError:“DataFrame”对象没有属性“to_numpy”,正如我说的,您需要将pandas包更新到0.24或更高版本。最新的是0.24.2。请尝试打印(pd.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuutip@GgdHhdhd请注意,所有其他方法,如.values。因为矩阵将被弃用,所以我不建议使用它们
>>> df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])
>>> arr = []
>>> for column in df.columns:
...     arr.append(df[column].to_numpy())
...
>>> arr
[array([1, 1, 4], dtype=int64), array([2, 3, 6], dtype=int64)]
>>>