35

我需要删除所有从第 3 列开始的元素都是 NaN 的行

df = DataFrame(np.random.randn(6, 5), index=['a', 'c', 'e', 'f', 'g','h'], columns=['one', 'two', 'three', 'four', 'five'])

df2 = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
df2.ix[1][0] = 111
df2.ix[1][1] = 222

在上面的示例中,我的最终数据框不会包含行“b”和“c”。

df.dropna()在这种情况下如何使用?

4

1 回答 1

76

您可以dropna使用参数subset和调用how

df2.dropna(subset=['three', 'four', 'five'], how='all')

顾名思义:

  • how='all'需要删除subset行中的每一列 (of ),而不是默认的.NaN'any'
  • subset是要检查NaNs 的那些列。

正如@PaulH指出的那样,我们可以概括为删除最后一k列:

subset=df2.columns[k:]

事实上,如果需要,我们甚至可以做一些更复杂的事情:

subset=filter(lambda x: len(x) > 3, df2.columns)
于 2013-02-20T23:58:41.307 回答