首页 文章

将Numpy结构化数组转换为Pandas Dataframes

提问于
浏览
0

我从以下代码中获取了一个结构化的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 回答

  • 1

    通过给出的示例,您可以让

    df = pd.DataFrame(test).set_index('f0')
    

    有了它,您可以访问索引为45到 df.loc[45] 的行 .

  • 1

    如果我已正确理解了这个问题,那么您成功发布的代码段会创建一个Pandas数据帧,并且您希望更改结果数据帧的索引 . 您可以使用 .set_index() 方法更改现有数据框的索引,并将要用作其索引的列的标签传递给它 .

    例如,如果包含所需索引的列被称为“scramble”,那么这应该可以解决问题:

    data.set_index('scramble')

    注意:默认情况下,这将返回包含更新索引的数据框 . 要改变原始数据框 data ,可以在调用方法时使用 inplace=True 选项 . 例如:

    data.set_index('scramble', inplace=True)

相关问题