我有多个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数组
答案 0 :(得分:1)
df['A'].values
将返回numpy数组。参见下文:
for col in df.columns:
print(col, type(df[col].values))
A <class 'numpy.ndarray'>
B <class 'numpy.ndarray'>
答案 1 :(得分:0)
您可以使用此方法为每一列获取numpy数组的列表。您也可以将数组放入字典中,但是我更喜欢列表而不是前者,因为它是有序的,我们可以始终将zip函数与df.columns一起使用以获取元组数据!
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)]
答案 2 :(得分:0)
您应该使用to_numpy()
方法,因为其他方法将被弃用。如果您的pandas
库早于 0.24 ,则应先对其进行更新,因为此方法是该版本之后的。
>>> 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)]
>>>