【问题标题】:Invalid Syntax in lambda function - Pythonlambda函数中的无效语法 - Python
【发布时间】:2021-03-26 04:49:11
【问题描述】:

我正在尝试在名为 own_house_age 的列中估算缺失值。

请原谅我看不到这个,但是这个语法有什么无效的?

own_house_impute = lambda x: (x['Own_House_Age'].replace(np.nan, value = 0)) if (x['House_Own'] == 0)
                        else (x['Own_House_Age'].replace(np.nan, value = np.median(df['Own_house_Age'])))

这是我得到的错误

File "<ipython-input-15-58ac93fedced>", line 1
    own_house_impute = lambda x: (x['Own_House_Age'].replace(np.nan, value = 0)) if (x['House_Own'] == 0)
                                                                                                         ^
SyntaxError: invalid syntax

这就是两个相关列的样子

House_Own   |    Own_House_Age
--------------------------------- 
            |       
   0.0      |        NaN
   0.0      |        NaN
   0.0      |        Nan
   1.0      |        4.0
   1.0      |        Nan

【问题讨论】:

  • 括号应该围绕整个 if-else 和/或 lambda 函数
  • @Vishnudev 尝试这样做,但不起作用。
  • 请在@Sachin 问题中提供一些示例数据作为输入和预期输出
  • 试试这个own_house_impute = (lambda x: x['Own_House_Age'].replace(np.nan, value = 0) if x['House_Own'] == 0 else x['Own_House_Age'].replace(np.nan, value = np.median(df['Own_house_Age'])))
  • @Vishnudev 这可以消除无效的语法错误,但现在它说浮动对象不可下标。我还提供了示例数据供您参考。

标签: python-3.x pandas lambda


【解决方案1】:

你可以试试这个

df['Own_House_Age'] = np.where(df.House_Own == 0, 0, np.median(df.House_Own))

【讨论】:

  • 由于某种原因,使用这种方法,缺失值的百分比从 65 增加到 70。没关系,我已经想出了更简单的方法来处理这个问题。将所有值本身归零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2022-12-06
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多