【发布时间】: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