重新索引数据帧

use*_*151 23 python dataframe pandas

我有一个数据框.然后我有一个逻辑条件,通过删除一些行我创建另一个数据框.但是,新数据框会跳过已删除行的索引.如何在不跳过的情况下顺序重新索引?这是一个编码澄清的样本

import pandas as pd
import numpy as np

jjarray = np.array(range(5))
eq2 = jjarray == 2
neq2 = np.logical_not(eq2)

jjdf = pd.DataFrame(jjarray)
jjdfno2 = jjdf[neq2]

jjdfno2
Run Code Online (Sandbox Code Playgroud)

日期:

  0
0 0
1 1
3 3
4 4
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

  0
0 0
1 1
2 3
3 4
Run Code Online (Sandbox Code Playgroud)

谢谢.

DSM*_*DSM 39

一种方法是使用reset_index:

>>> df = pd.DataFrame(range(5))
>>> eq2 = df[0] == 2
>>> df_no_2 = df[~eq2]
>>> df_no_2
   0
0  0
1  1
3  3
4  4
>>> df_no_2.reset_index(drop=True)
   0
0  0
1  1
2  3
3  4
Run Code Online (Sandbox Code Playgroud)

  • 我相信你还需要指定`inplace = True`,否则`df_no_2`将不会受到影响,而是会创建一个新的数据框:`df_no_2.reset_index(drop = True,inplace = True)`(pandas v0.15.2 ) (7认同)