首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用DataFrame方法删除NaN (null)计数的可接受阈值

无法使用DataFrame方法删除NaN (null)计数的可接受阈值
EN

Stack Overflow用户
提问于 2020-11-27 14:26:02
回答 1查看 278关注 0票数 1

我打算使用DataFrame方法将记录从axis=0 (行)中删除,其值超过25%作为NaN。我已经审查了熊猫的官方参考,并提出了以下代码。然而,这并没有给出预期的结果。我遗漏了什么?

同时,使问题可重复地共享数据文件。

参考文献综述:

关于某些相关主题的现有堆栈溢出帖子的

  1. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html
  2. Multitude。

代码:

代码语言:javascript
复制
import pandas as pd

df = pd.read_csv('data3.csv')

# Method that doesn't work
df.shape # (628, 123)
df.dropna(thresh=df.shape[1]/ 4, axis=0, inplace=True)
#OR --- df.dropna(thresh=df.shape[1]/ 4, axis=0, subset=list(df.columns), inplace=True)
df.shape # (628, 123)

# Method that works
df.shape # (628, 123)
df = df[(df.isna().sum(axis=1) < df.shape[1]/ 4)]
df.shape # (626, 123)

CSV文件链接: https://wetransfer.com/downloads/57e63e83bd6b62ca8016768bec732f7720201127140326/2a946b

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-27 17:00:33

您的所有行至少都有df.shape[1]/ 4 = 30.7非NaN值,这就是为什么您的drop语句不能工作的原因--没有什么可以放在那里的。听起来,从你的操作来看,你至少希望非NaNs的数量是df.shape[1] - df.shape[1]/ 4,这是对你有用的。所以这就是

代码语言:javascript
复制
df.dropna(thresh = df.shape[1] - df.shape[1]/ 4, axis=0).shape

产生

代码语言:javascript
复制
(626, 123)

如你所愿

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65038982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档