【问题标题】:Change None value in a column to string 'None' in Python在 Python 中将列中的 None 值更改为字符串“None”
【发布时间】:2018-04-26 13:27:25
【问题描述】:

我的数据集中的某些列缺少表示为 None(Nonetype,不是字符串)的值。其他一些缺失值表示为“N/A”或“No”。我希望能够在下面的方法中处理这些缺失值。

df.loc[df.col1.isin('None', 'Yes', 'No'), col1] = 'N/A'

现在我的问题是,None 是一个值而不是字符串,所以我不能将 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”

【问题讨论】:

  • 你能给出一个输入数据框和你的预期输出吗?我试着回答你的问题,但不确定你真正需要什么。
  • 更新了我帖子底部的示例数据框。
  • 您能否提供更多关于您为什么要这样做的背景信息?导出方法(例如df.to_csv)具有na_rep 参数,可以将所有空/缺失数据更改为您想要的任何字符串。

标签: python pandas missing-data nonetype


【解决方案1】:

null/None'None' 之间存在差异。因此,您可以将原始语句更改为

df.loc[df.col1.isin([None, 'Yes', 'No']), col1] = 'N/A'

即去掉None的撇号

或者您可以先找到所有存在空值或不存在空值的索引,然后根据索引选择所有这些行。然后你可以使用你原来的陈述。

df["col1"].loc[df["col1"].isnull()] = 'None'

【讨论】:

    【解决方案2】:

    创建一个例子df:

    df = pd.DataFrame({"A": [None, 'Yes', 'No', 1, 3, 5]})
    

    看起来像:

         A
    0  None
    1   Yes
    2    No
    3     1
    4     3
    5     5
    

    用 None 替换你的 'None' 并将要替换的参数设为一个列表(这就是 isin 的工作原理):

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-11
      • 2014-12-16
      • 1970-01-01
      • 2012-06-24
      • 2016-06-27
      • 2013-07-15
      • 1970-01-01
      • 2014-11-05
      相关资源
      最近更新 更多