如何删除Pandas DataFrame中的行并重新标记索引?

use*_*430 4 indexing delete-row pandas

我正在将文件读入可能具有无效(即NaN)行的Pandas DataFrame.这是顺序数据,所以我有row_id + 1引用row_id.当我使用frame.dropna()时,我得到了所需的结构,但索引标签保持原始分配的状态.如何将索引标签重新分配0到N-1,其中N是dropna()之后的行数?

Ama*_*man 9

使用pandas.DataFrame.reset_index(),该选项drop=True将满足您的需求.

In [14]: df = pd.DataFrame(np.random.randn(5,4))

In [15]: df.ix[::3] = np.nan

In [16]: df
Out[16]:
          0         1         2         3
0       NaN       NaN       NaN       NaN
1  1.895803  0.532464  1.879883 -1.802606
2  0.078928  0.053323  0.672579 -1.188414
3       NaN       NaN       NaN       NaN
4 -0.766554 -0.419646 -0.606505 -0.162188

In [17]: df = df.dropna()

In [18]: df.reset_index(drop=True)
Out[18]:
          0         1         2         3
0  1.895803  0.532464  1.879883 -1.802606
1  0.078928  0.053323  0.672579 -1.188414
2 -0.766554 -0.419646 -0.606505 -0.162188
Run Code Online (Sandbox Code Playgroud)

  • 请注意其他人发现这一点:您需要执行`df = df.reset_index(drop=True)`,否则更改将不会在 df 中“持续”。 (2认同)