我从以下代码中获取了一个结构化的numpy数组:
data = np.genfromtxt(fname, dtype = None, comments = '#', skip_header=1, usecols=(ucols))
其中第一列是以加扰顺序(我希望保留)的其余数据集的索引 . 我想将结构化数组转换为Pandas数据帧,其中加扰索引作为数据帧的可调用索引 .
编辑:
import numpy as np
test = np.array([(45,1,'mars',1,1),(67,1,'pluto',1,1),(12,1,'saturn',1,1)],dtype='i,f,U10,i,f')
创建一个numpy结构化数组,调用第一个条目给出:
In [5]: test[0]
Out[5]: (45, 1., 'mars', 1, 1.)
调用整个数组:
In [6]: test
Out[6]:
array([(45, 1., 'mars', 1, 1.), (67, 1., 'pluto', 1, 1.),
(12, 1., 'saturn', 1, 1.)],
dtype=[('f0', '<i4'), ('f1', '<f4'), ('f2', '<U10'), ('f3', '<i4'), ('f4', '<f4')])
我想把这个结构化数组转换成一个pandas数据帧,然后在这个例子中让45,67,12成为可调用索引来访问数组'rows'中的数据 .
2 回答
通过给出的示例,您可以让
有了它,您可以访问索引为45到
df.loc[45]
的行 .如果我已正确理解了这个问题,那么您成功发布的代码段会创建一个Pandas数据帧,并且您希望更改结果数据帧的索引 . 您可以使用 .set_index() 方法更改现有数据框的索引,并将要用作其索引的列的标签传递给它 .
例如,如果包含所需索引的列被称为“scramble”,那么这应该可以解决问题:
data.set_index('scramble')
注意:默认情况下,这将返回包含更新索引的数据框 . 要改变原始数据框
data
,可以在调用方法时使用inplace=True
选项 . 例如:data.set_index('scramble', inplace=True)