我有一个Pandas数据框,里面有很多NAN
值。
如何删除number_of_na_values > 2000
这样的列?
我试着这样做:
toRemove = set()
naNumbersPerColumn = df.isnull().sum()
for i in naNumbersPerColumn.index:
if(naNumbersPerColumn[i]>2000):
toRemove.add(i)
for i in toRemove:
df.drop(i, axis=1, inplace=True)
有没有更优雅的方法?
3条答案
按热度按时间fnvucqvd1#
下面是另一种方法,可以保留每列中nan数小于或等于指定值的列:
在我的测试中,这似乎比Jianxun Li在我测试的案例中建议的drop columns方法要快一些(如下所示)。然而,我应该注意,如果你只是简单地不使用apply方法(例如
df.drop(df.columns[df.isnull().sum(axis=0) > max_number_of_nans], axis=1)
),性能会变得更相似。性能通常随数据大小而变化,因此不要忘记检查与数据最接近的情况。
cuxqih212#
同样的逻辑,只是把所有的东西放在一行。
sbtkgmzw3#
对我来说,我似乎不需要set_index: