如何将pandasDataFrame
转换为以下具有列名的Numpy数组
array([('Heidi Mitchell', 'uboyd@hotmail.com', 74, 52, 'female', '1121', 'cancer', '03/06/2018'),
('Kimberly Kent', 'wilsoncarla@mitchell-gree', 63, 51, 'male', '2003', 'cancer', '16/06/2017')],
dtype=[('name', '<U16'), ('email', '<U25'), ('age', '<i4'), ('weight', '<i4'), ('gender', '<U10'), ('zipcode', '<U6'), ('diagnosis', '<U6'), ('dob', '<U16')])
这是我的熊猫数据帧df
:
col1 col2
3 5
3 1
4 5
1 5
2 2
我尝试将其转换为以下内容:
import numpy as np
dt = np.dtype([('col1', np.int32), ('col2', np.int32)])
arr = np.array(df.values, dtype=dt)
但它给我的输出如下:
array([[(3, 5), (3, 1)],
...
dtype=[('col1', '<i4'), ('col2', '<i4')])
出于某种原因,数据行被分组为[(3, 5), (3, 1)]
,而不是[(3, 5), (3, 1), (4, 5), (1, 5), (1, 2)]
您可以使用
df.to_records(index=False)
将数据帧转换为结构化数组:输出:
使用pandas函数
to_records()
,该函数将数据帧转换为numpy记录数组。链接如下:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_records.html网站中给出的一些示例如下:
可以从记录数组中排除索引:
相关问题 更多 >
编程相关推荐