我的数据集中的某些列具有缺失值,表示为None(Nonetype,而不是字符串)。其他一些缺失值表示为“N / A”或“否”。我希望能够在下面的方法中处理这些缺失值。
df.loc[df.col1.isin('None', 'Yes', 'No'), col1] = 'N/A'
现在我的问题是,None是一个不是字符串的值,因此我不能将none用作'None'。我已经读过某个地方我们可以将没有值转换为字符串'None'。
任何人都可以给我任何线索如何去做?
注1:
如果我在代码下面运行,只是为了清楚说明:
df.col1.unique()
我得到了这个输出:
array([None, 'No', 'Yes'], dtype=object)
注2:
我知道我可以使用isnull()
处理缺失值或无值,但在这种情况下我需要使用.isin()
方法
示例数据框:
f = {'name': ['john', 'tom', None, 'rock', 'dick'], 'DoB': [None, '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', None]}
df1 = pd.DataFrame(data = f)
当你在代码下面运行时,你会看到None作为一个值。
df1.Address.unique()
output: array(['NY', 'NJ', 'PA', None], dtype=object)
我希望None显示为'None'
答案 0 :(得分:1)
null/None
和'None'
之间存在差异。因此,您可以将原始语句更改为
df.loc[df.col1.isin([None, 'Yes', 'No']), col1] = 'N/A'
也就是说,取出None
或者您可以首先找到存在null或none的所有索引,然后根据索引选择所有这些行。然后你可以使用你的原始陈述。
df["col1"].loc[df["col1"].isnull()] = 'None'
答案 1 :(得分:0)
创建一个示例df:
df = pd.DataFrame({"A": [None, 'Yes', 'No', 1, 3, 5]})
看起来像:
A
0 None
1 Yes
2 No
3 1
4 3
5 5
替换你的'无' by None并将要替换的参数作为列表(这是如何工作的):
df.loc[df.A.isin([None, 'Yes', 'No']), 'A'] = 'N/A'
返回:
A
0 N/A
1 N/A
2 N/A
3 1
4 3
5 5