将列中的无值更改为Python

时间:2018-04-26 13:27:25

标签: python pandas missing-data nonetype

我的数据集中的某些列具有缺失值,表示为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'

2 个答案:

答案 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