如何存储通过pd.dropna删除的行的行号(df.dropna(axis = 0))

问题描述 投票:0回答:3

示例数据帧如下

     c1    c2
0    1      2
1    nan    4
2    1      nan
3    4       1
4    nan    nan

在使用df.dropna(axis = 0)函数删除之后,我希望得到一个删除行的索引列表,如下所示。

 [1,2,4]
python pandas
3个回答
3
投票

您可以使用:

df.index[df.isnull().any(1)].tolist()

输出:

[1, 2, 4]

然后,

df = df.dropna(axis=0)

细节:

  1. df.isnull()返回值为True False的数据帧
  2. 接下来使用轴= 1的any方法,因此它在一行中查找任何True,这将返回一个系列,其中index作为数据帧的索引,而True作为True值的任何行。
  3. 最后,使用booleaning index来过滤掉系列中的值不为True的那些索引。

5
投票

你可以使用difference

df.index.difference(df.dropna().index).tolist()
Out[420]: [1, 2, 4]

要么

df.index[df.isnull().any(1)].tolist()
Out[424]: [1, 2, 4]

2
投票

你可以使用np.where。它将返回值为NaN的行和列。

np.where(df.isna())
(array([1, 2, 4, 4]), array([0, 1, 0, 1]))

选择元组的第一项,将其转换为集合,然后返回列表:

list(set(np.where(df.isna())[0]))
[1, 2, 4]
© www.soinside.com 2019 - 2024. All rights reserved.