Python 在不更改顺序的情况下重新编制索引
我有以下数据帧:Python 在不更改顺序的情况下重新编制索引,python,pandas,Python,Pandas,我有以下数据帧: in year ni d m x y q 1 2012 1 2 0 NaN NaN 3 6 2012 2 1 1 9 9 1 5 2012 3 1 1 17 17 1 3 2012 4 0 3 37 37 0 5 2012 5 1 0 NaN NaN 3 2 2012 6
in year ni d m x y q
1 2012 1 2 0 NaN NaN 3
6 2012 2 1 1 9 9 1
5 2012 3 1 1 17 17 1
3 2012 4 0 3 37 37 0
5 2012 5 1 0 NaN NaN 3
2 2012 6 3 1 15 15 3
当我使用df.reindex(index=[1,2,3,4,5,6])-基本上是列'ni'(我想要使用的索引)-那么这将改变我的数据帧的顺序,我试图避免这种情况。我知道我可以通过重命名来完成,但是数据有50000行,写这样一本字典很累
那么,有没有一种方法可以保持顺序但更改索引,或者有没有一种技巧可以更快地重命名或简单地将ni调整为索引?假设您的数据帧如下所示(使用索引
'in'
),您可以使用:
尽管在许多情况下这可能是正常的,但如果您关心速度和内存使用,您可以在原地执行此操作(即更改df
,而不创建副本)
in place
似乎快了30%左右。df.set\u index(“ni”)能解决你的问题吗?Thx很多,因为某种原因,我没有意识到这一点!
In [1]: df = pd.read_csv('ni.csv', sep='\s+', index_col=0)
In [2]: df
Out[2]:
year ni d m x y q
in
1 2012 1 2 0 NaN NaN 3
6 2012 2 1 1 9 9 1
5 2012 3 1 1 17 17 1
3 2012 4 0 3 37 37 0
5 2012 5 1 0 NaN NaN 3
2 2012 6 3 1 15 15 3
In [3]: df.set_index('ni', drop=False)
Out[3]:
year ni d m x y q
ni
1 2012 1 2 0 NaN NaN 3
2 2012 2 1 1 9 9 1
3 2012 3 1 1 17 17 1
4 2012 4 0 3 37 37 0
5 2012 5 1 0 NaN NaN 3
6 2012 6 3 1 15 15 3
In [4]: df.set_index('ni', drop=False, inplace=True)