【发布时间】:2021-07-20 03:50:56
【问题描述】:
我有一个数据框,其中包含各种指示缺失的不同值。我以一种方式对其进行了修改,现在它们应该都指定为“NaN”,如下所示:
import numpy as np
import pandas as pd
import numpy as np
data = {'Name':['Tom', 'nick', '-', 'jack'],
'Age':['20', '0', '19', ''],
'color':['yellow','Na','blue','red']}
df = pd.DataFrame(data)
def missing_values(x):
missingness_indicators = ["NaN","NAN","NA","Na","n/a", "na", "--","-"," ", "-inf", "inf", "nan", "None", "0", "", np.nan]
modified_df = df.replace(missingness_indicators,'NaN')
modified_df["color"] = modified_df.loc[:,'color'].fillna(method='bfill', axis=0) #LOCF
return modified_df
但是使用基于已识别缺失值的 pandas 函数不起作用,我认为这是因为我没有导入具有指定值的数据框(因为这会导致其他问题,我处理比示例更大的数据集)
我现在正在寻找一种在此数据集上应用像 .fillna 这样的 pandas 函数的方法。
【问题讨论】:
-
如果您正在读取文件,您可以使用
na_values参数来定义您的自定义 NaN 值 -
我知道这一点,但我在工作中的输入已经是 pandas 数据框,所以我正在寻找不同的解决方案
-
您可能要替换为字符串 'NaN',尝试使用 None(无引号)或 np.nan 代替