繁体   English   中英

pandas DataFrame可以有效地删除列

[英]pandas DataFrame efficiently remove columns

我有一个1600 x 115,316的DataFrame,主要是NaN。 我想删除每个列中没有两个以上值的列。 我写了一些有效的代码,但是人类活着需要很长时间。

for eachColumn in df.columns:
  if np.sum(df[eachColumn]) <= 2:
    df.drop(eachColumn, axis=1, inplace=True)

有没有更好的方法来完成我在这里尝试做的事情?

这是一些示例数据:

In [18]: df = pd.DataFrame(np.ones(shape=(10, 2))) * np.nan

In [19]: df.iloc[[2, 3], 0] = 2

所以第0列有2个非NaN。 保持并放弃1

In [20]: df.drop(df.columns[(~df.isnull()).sum() < 2], axis=1)
Out[20]: 
    0
0 NaN
1 NaN
2   2
3   2
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN

从内到外阅读。 .isnull给出一个Bool的DataFrame,用~ ,和得到的每个列的非空值计数来转换Trues / Falses,选择总和小于2的列(第1列)并删除它./

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM