的子集(切片)Pandas.DataFrame与原始数据帧具有相同的索引

2024-05-16 12:28:37 发布

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

假设,我有一个带有多索引的数据帧,如下所示:

In [1]:d=pnd.DataFrame(range(5),index=pnd.MultiIndex.from_tuples([('A',1),('A',2),('A',3),('A',4),('A',5)]))

In [2]: d
Out[2]: 
     0
A 1  0
  2  1
  3  2
  4  3
  5  4

我可以通过子集创建另一个数据帧:

^{pr2}$

但是这个新DataFrame的index对象与原始DataFrame中的index对象相同(包含“levels”中的所有原始项)。在

In [5]: p.index
Out[5]: 
MultiIndex(levels=[[u'A'], [1, 2, 3, 4, 5]],
           labels=[[0, 0, 0], [0, 1, 2]])

如何复制一个子集,它不“记住”原始数据帧的索引对象?在

我需要这样做的原因是因为我的一些函数访问index对象来获取元数据,而索引从原始数据帧中继承的事实混淆了这些函数。在


Tags: 数据对象函数infromdataframe原始数据index
1条回答
网友
1楼 · 发布于 2024-05-16 12:28:37

如果不关心子集中索引的顶层,可以设置

p.index = p.index.droplevel()
p.index
Int64Index([1, 2, 3], dtype='int64')

或者,如果您想保留多重索引并只重置级别,可以调用set_levels

^{pr2}$

相关问题 更多 >