如何在Python中删除从第k列开始的空值行
我需要删除所有从第三列开始的元素都是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()
呢?
1 个回答
76
你可以使用dropna
这个函数,并传入参数subset
和how
:
df2.dropna(subset=['three', 'four', 'five'], how='all')
从名字上看:
how='all'
表示只有当这一行的所有指定列(subset
里的列)都是NaN
(也就是空值)时,这一行才会被删除,而默认的'any'
是只要有一列是NaN
就会删除这一行。subset
是你想要检查哪些列是否有NaN
的地方。
正如@PaulH所提到的,我们可以扩展这个功能来删除最后k
列,方法是:
subset=df2.columns[k:]
其实,如果需要的话,我们甚至可以做一些更复杂的操作:
subset=filter(lambda x: len(x) > 3, df2.columns)