AttributeError: 'float' 对象没有属性 'split'
Posted
技术标签:
【中文标题】AttributeError: \'float\' 对象没有属性 \'split\'【英文标题】:AttributeError: 'float' object has no attribute 'split'AttributeError: 'float' 对象没有属性 'split' 【发布时间】:2017-07-02 15:46:18 【问题描述】:我正在拨打此行:
lang_modifiers = [keyw.strip() for keyw in row["language_modifiers"].split("|") if not isinstance(row["language_modifiers"], float)]
这似乎适用于 row["language_modifiers"]
是一个单词(atlas method
、central
),但当它出现时不是 nan
。
我认为我的if not isinstance(row["language_modifiers"], float)
可以赶上nan
出现的时间,但事实并非如此。
背景:row["language_modifiers"]
是 tsv 文件中的一个单元格,当正在解析的 tsv 中该单元格为空时,它会显示为 nan
。
【问题讨论】:
为什么这被否决了?就这样我知道。您可以测试我在问题中包含的 3 个测试用例。 【参考方案1】:您是对的,此类错误主要是由 NaN 表示空单元格引起的。 在应用您的进一步操作之前,在您的数据框 df 上使用此惯用语通常会过滤掉此类数据:
df_new = df[df['ColumnName'].notnull()]
或者,使用fillna()
方法将null
值估算(替换)为默认值可能更方便。
例如。所有null
或NaN
都可以替换为其列的平均值
housing['LotArea'] = housing['LotArea'].fillna(housing.mean()['LotArea'])
或者可以用空字符串“”之类的值或其他默认值替换
housing['GarageCond']=housing['GarageCond'].fillna("")
【讨论】:
【参考方案2】:您也可以使用df = df.dropna(thresh=n)
,其中n
是容差。意思是,它需要 n 个非 NA 值才能不删除行
请注意,这种方法会删除该行
例如:如果您有一个包含 5 列的数据框,df.dropna(thresh=5)
将删除任何没有 5 个有效值或非 Na 值的行。
在您的情况下,您可能只想保留有效行;如果是这样,您可以将阈值设置为您拥有的列数。
pandas documentation on dropna
【讨论】:
以上是关于AttributeError: 'float' 对象没有属性 'split'的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pandas 的“where”方法时,“AttributeError:‘float’对象没有属性‘all’”
Celery CRITICAL/MainProcess] 不可恢复的错误:AttributeError("'float' object has no attribute 'items'&qu
AttributeError:“DataFrame”对象没有属性
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas(
解决方法:opencv读取中文路径图像报错 | AttributeError: ‘NoneType‘ object has no attribute ‘astype‘