【问题标题】:Replace missing value with N/A for multiple columns at the same time同时用 N/A 替换多个列的缺失值
【发布时间】:2018-04-23 18:39:11
【问题描述】:

我想用“N/A”替换列的缺失值(或空白“”)。我试过下面的代码,但可能会犯一些错误或没有使用正确的方法。

df2['test_edited'] = df2['test'].map(lambda x: 'N/A' if x.empty() )

或

df2['test_edited'] = df2['test'].map(lambda x: 'N/A' if x == ' ' )

这是我看到的错误: SyntaxError: 无效语法

我之前尝试过的: 我之前使用过 if-else 和 lambda,这可能是更标准的方式,但在这种特殊情况下,我只想要一个 If-Then 语句类型的用法。因为我只需要替换空白或缺失值,但保持列的其他值不变。例如,在下面的示例中,我想用 0 替换 42 岁,但我想保持其他年龄值不变,如果您使用 if-else 语句,这将不起作用

dfx['Age'] = dfx['Age'].map(lambda x: '0' if x == 42 else 1)

所以我的问题是: 1. 是否可以在 lambda 中只使用 If-then 类型的语句 2. 如何同时对多个列执行相同的操作?例如在下面的情况下,如果我有 test1 test2 test3 等,我想在一行中处理所有这些。

缺失值基本是空白的,看起来像这样

【问题讨论】:

  • df2['test_edited'] = df2['test'].map(lambda x: 'N/A' if x == ' ' else x) 你的意思是?
  • 是的。我想就是这样。现在如何对多个列执行相同的操作 - 我的意思是如果我使用 df2['test', 'test2', 'test3'].map(lambda) 我会得到错误。
  • 类似df2 = df2.replace('N/A', np.nan).fillna('')
  • 我尝试了下面的代码,但它不起作用。 fill_list = ['Age', 'Age_Group'] dfx[fill_list] = dfx[fill_list].replace('N/A', np.nan).fillna(' ')
  • 我认为这可行 - dfx[fill_list] = dfx[fill_list].replace(' ', 'N/A') 。

标签: python-3.x pandas lambda missing-data


【解决方案1】:

您可以简单地定义要填充缺失值的列列表,然后在该子集上应用 fillna:

fill_list = ["A", "B", "C"]
df2[fill_list] = df2[fill_list].fillna("N/A")

【讨论】:

  • 我尝试了代码,我想理想情况下它会起作用,但是因为我的缺失值表示为空白或像这样的'',所以代码没有任何效果。我已经在底部更新了我的帖子。我运行下面的代码没有任何成功 fill_list = ['Age', 'Age_Group'] dfx[fill_list] = dfx[fill_list].fillna("N/A")
【解决方案2】:

为了填补缺失值,我们通常使用.fillna

对于单列也是如此:

df2['test_edited'] = df2['test'].fillna('N/A')

如果您有多个列,并且想要复制每一列,其中 NaN 值被替换为“N/A”,正如 Yilun Zhang 在他的回答中所写,您可以一次在多个列上使用 fillna 作为好吧。

col_list = ['test', 'customer']
nan_replaced = ['test_edited', 'customer_edited']
df[nan_replaced] = df[col_list].fillna('N/A') 

【讨论】:

  • 但不是 NaN,而是“N/A”
  • 你确定吗?因为问题的第一句话是I want to replace the missing value (or blank ' ') of a column with 'N/A'
  • @tobsecret 你是对的。我想将 ' ' 替换为 'N/A'
猜你喜欢
  • 1970-01-01
  • 2023-01-13
  • 2015-06-28
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多