Python 如何从pandas数据帧中提取值并将其放入numpy数组中?
我有多个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数组列表。您也可以将数组放入字典中,但
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)]
>>>