首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:“float”对象没有属性“”split“”

AttributeError:“float”对象没有属性“”split“”
EN

Stack Overflow用户
提问于 2017-02-14 19:14:23
回答 2查看 73.3K关注 0票数 15

我在给这条线路打电话:

代码语言:javascript
复制
lang_modifiers = [keyw.strip() for keyw in row["language_modifiers"].split("|") if not isinstance(row["language_modifiers"], float)]

row["language_modifiers"]是一个单词(atlas methodcentral)时,这似乎是有效的,但当它作为nan出现时就不起作用了。

我以为我的if not isinstance(row["language_modifiers"], float)可以赶上nan出现的时候,但事实并非如此。

背景:row["language_modifiers"]是tsv文件中的一个单元格,当要解析的tsv中的单元格为空时,它会显示为nan

EN

回答 2

Stack Overflow用户

发布于 2017-03-14 02:08:39

您是对的,这种错误主要是由表示空单元格的NaN引起的。在应用进一步的操作之前,在你的数据帧df上使用这个习惯用法,过滤掉这些数据是很常见的:

代码语言:javascript
复制
df_new = df[df['ColumnName'].notnull()]

或者,使用fillna()方法用一些默认值来估算(替换) null值可能更方便。例如,所有的nullNaN都可以替换为其列的平均值

代码语言:javascript
复制
housing['LotArea'] = housing['LotArea'].fillna(housing.mean()['LotArea'])

或者可以替换为空字符串"“之类的值或其他默认值

代码语言:javascript
复制
housing['GarageCond']=housing['GarageCond'].fillna("")
票数 42
EN

Stack Overflow用户

发布于 2019-03-17 01:06:00

您还可以使用df = df.dropna(thresh=n),其中n是容差。这意味着,它需要n个非NA值才不会删除行

请注意,此方法将删除行

例如:如果您有一个包含5列的数据帧,df.dropna(thresh=5)将删除任何没有5个有效值或非Na值的行。

在本例中,您可能只希望保留有效的行;如果是这样,您可以将阈值设置为您拥有的列数。

pandas documentation on dropna

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

https://stackoverflow.com/questions/42224700

复制
相关文章

相似问题

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