Dhr*_*ati 10 python csv parsing nan
我在说这句话:
lang_modifiers = [keyw.strip() for keyw in row["language_modifiers"].split("|") if not isinstance(row["language_modifiers"], float)]
Run Code Online (Sandbox Code Playgroud)
这似乎适用于row["language_modifiers"]单词(atlas method,central),但不是在它出现时nan.
我认为我if not isinstance(row["language_modifiers"], float)可以抓住事情发生的时间,nan但事实并非如此.
背景:row["language_modifiers"]是tsv文件中的一个单元格,并且nan在被解析的tsv中该单元格为空时出现.
Ozg*_*urk 24
你是对的,这种错误主要是由NaN代表空单元格引起的.在应用您的进一步操作之前,通常会在数据框df上使用此习惯用法过滤掉此类数据:
df_new = df[df['ColumnName'].notnull()]
Run Code Online (Sandbox Code Playgroud)
或者,使用fillna()方法null用默认值来估算(替换)值可能更方便.例如,所有null或者NaN可以用其列的平均值替换
housing['LotArea'] = housing['LotArea'].fillna(housing.mean()['LotArea'])
Run Code Online (Sandbox Code Playgroud)
或者可以替换为空字符串""或其他默认值
housing['GarageCond']=housing['GarageCond'].fillna("")
Run Code Online (Sandbox Code Playgroud)
小智 5
您还可以使用容差df = df.dropna(thresh=n)在哪里。n意思是,它需要n 个非 NA 值才能不删除该行
请注意,这种方法将删除该行
例如:如果您有一个包含 5 列的数据框,df.dropna(thresh=5)则会删除任何没有 5 个有效值或非 Na 值的行。
在您的情况下,您可能只想保留有效行;如果是这样,您可以将阈值设置为您拥有的列数。
| 归档时间: |
|
| 查看次数: |
28229 次 |
| 最近记录: |