Pandas:如何重用数据中的索引信息?

2024-10-04 07:39:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试:

>>> import pandas as pd
>>> data = [ ('id01', 'john', 23), ('id02', 'arquimedes', 42) ]
>>> pd.DataFrame(data, columns=['id', 'name', 'age'])
     id        name  age
0  id01        john   23
1  id02  arquimedes   42

我希望pandas不是使用额外的索引列,而是重用我的id列作为索引。如何配置?

这就是我想要的:

^{pr2}$

Tags: columnsnameimportiddataframepandasagedata
2条回答

我认为最好是使用set_index(据我所知)。但是如果您想在不使用reset_index的情况下创建它,可以使用zip对数据进行预处理,以获得合适的形状:

ind = list(zip(*data))[0]
dat = list(zip(*list(zip(*data))[1:]))

In [48]: dat
Out[48]: [('john', 23), ('arquimedes', 42)]

In [50]: ind
Out[50]: ('id01', 'id02')

In [52]: pd.DataFrame(dat, index=ind)
Out[52]: 
               0   1
id01        john  23
id02  arquimedes  42

或者如果你喜欢一句话:

^{pr2}$

展示一些zip魔力:

In [53]: list(zip(*data))
Out[53]: [('id01', 'id02'), ('john', 'arquimedes'), (23, 42)]

In [54]: list(zip(*data))[1:]
Out[54]: [('john', 'arquimedes'), (23, 42)]

In [55]: list(zip(*list(zip(*data))[1:]))
Out[55]: [('john', 23), ('arquimedes', 42)]

尝试使用^{}

>>> pd.DataFrame(data, columns=['id', 'name', 'age']).set_index('id')
    name    age
id      
id01    john    23
id02    arquimedes  42

或者,您也可以创建索引,如下所示:

^{pr2}$

注意,这会创建一个稍微不同的结果-索引没有命名。在

相关问题 更多 >