Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不更改顺序的情况下重新编制索引_Python_Pandas - Fatal编程技术网

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)