2024-06-16 10:49:50 发布
网友
我在熊猫中排序和重置索引时遇到一些问题:
dfm = dfm.sort(['delt'],ascending=False) dfm = dfm.reindex(index=range(1,len(dfm)))
重新编制索引后,数据帧返回未排序。我的最终目标是有一个排序的数据框架,其中的索引号为1--gt;len(dfm),所以如果有更好的方法,我不介意
谢谢!
我认为你误解了reindex的作用。它使用传递的索引沿传递的轴选择值,然后在传递的索引与当前索引不匹配的地方填充NaN。你感兴趣的只是将索引设置为其他内容:
reindex
NaN
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在构造ranges时不包含端点。
len(df)
只需更改实际索引,而不是重新编制索引:
dfm.index = range(1,len(dfm) + 1)
那不会改变顺序,只是索引
我认为你误解了
reindex
的作用。它使用传递的索引沿传递的轴选择值,然后在传递的索引与当前索引不匹配的地方填充NaN
。你感兴趣的只是将索引设置为其他内容:记住,如果希望索引中有
len(df)
,则必须向端点添加1,因为Python在构造ranges时不包含端点。只需更改实际索引,而不是重新编制索引:
那不会改变顺序,只是索引
相关问题 更多 >
编程相关推荐