首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas: Reindex取消数据帧排序

Pandas: Reindex取消数据帧排序
EN

Stack Overflow用户
提问于 2013-09-19 01:11:04
回答 2查看 13.1K关注 0票数 17

我在Pandas中排序和重置索引时遇到了一些问题:

代码语言:javascript
复制
dfm = dfm.sort(['delt'],ascending=False)
dfm = dfm.reindex(index=range(1,len(dfm)))

在我重新编制索引后,数据帧返回未排序的数据。我的最终目标是得到一个带有1 --> len(dfm)索引号的排序数据帧,所以如果有更好的方法,我不介意,

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-19 01:16:31

只需更改实际索引即可,而不是重新索引:

代码语言:javascript
复制
dfm.index = range(1,len(dfm) + 1)

那么这不会改变顺序,只会改变索引。

票数 38
EN

Stack Overflow用户

发布于 2013-09-19 01:17:02

我想你误解了reindex是做什么的。它使用传递的索引沿着传递的轴选择值,然后在传递的索引与当前索引不匹配的地方填充NaN。您感兴趣的只是将索引设置为其他值:

代码语言:javascript
复制
In [12]: df = DataFrame(randn(10, 2), columns=['a', 'delt'])

In [13]: df
Out[13]:
       a   delt
0  0.222 -0.964
1  0.038 -0.367
2  0.293  1.349
3  0.604 -0.855
4 -0.455 -0.594
5  0.795  0.013
6 -0.080 -0.235
7  0.671  1.405
8  0.436  0.415
9  0.840  1.174

In [14]: df.reindex(index=arange(1, len(df) + 1))
Out[14]:
        a   delt
1   0.038 -0.367
2   0.293  1.349
3   0.604 -0.855
4  -0.455 -0.594
5   0.795  0.013
6  -0.080 -0.235
7   0.671  1.405
8   0.436  0.415
9   0.840  1.174
10    NaN    NaN

In [16]: df.index = arange(1, len(df) + 1)

In [17]: df
Out[17]:
        a   delt
1   0.222 -0.964
2   0.038 -0.367
3   0.293  1.349
4   0.604 -0.855
5  -0.455 -0.594
6   0.795  0.013
7  -0.080 -0.235
8   0.671  1.405
9   0.436  0.415
10  0.840  1.174

请记住,如果希望len(df)在索引中,则必须在端点上加1,因为在构造范围时Python不包括端点。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18878308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档