应用 Python lambda:如果条件给出语法错误

Apply Python lambda : if condition giving syntax error

这是我的数据集

fake_abalone2

   Sex   Length  Diameter  Height   Whole  Shucked  Viscera  Shell  Rings
                                    Weight  Weight  Weight  Weight
0   M    0.455    0.365    0.095    0.5140  0.2245  0.1010  0.1500  15
1   M    0.350    0.265    0.090    0.2255  0.0995  0.0485  0.0700  7
2   F    0.530    0.420    0.135    0.6770  0.2565  0.1415  0.2100  9
3   M    0.440    0.365    0.125    0.5160  0.2155  0.1140  0.1550  10
4   K    0.330    0.255    0.080    0.2050  0.0895  0.0395  0.0550  7
5   K    0.425    0.300    0.095    0.3515  0.1410  0.0775  0.1200  8

使用以下方法时出现语法错误。请帮帮我。 我希望 "sex" table 中的值根据 "Rings" table.If "Rings" 值小于 10 相应的 "sex" 值进行更改到'K'。否则,"Sex" table.

中不应进行任何更改
 fake_abalone2["sex"]=fake_abalone2["Rings"].apply(lambda x:"K" if x<10)

File "", line 1 fake_abalone2["sex"]=fake_abalone2["Rings"].apply(lambda x:"K" if x<10)

SyntaxError: invalid syntax

您可以使用 Python numpy 代替 lambda 函数。

使用 import numpy as np

导入 python numpy

那么就可以使用下面的方法来替换字符串了

fake_abalone2['Sex'] = np.where(fake_abalone2['Rings']<10, 'K', fake_abalone2['Sex']) 

以下方法非常有效。

    df1["Sex"]=df1.apply(lambda x: "K"if x.Rings<10 else x["Sex"],axis=1)

df1 是数据框

  Sex   Length  Diameter Height Whole   Shucked Viscera Shell Rings         
                                weight  weight  weight  weight
0   M   0.455   0.365   0.095   0.5140  0.2245  0.1010  0.1500  15
1   K   0.350   0.265   0.090   0.2255  0.0995  0.0485  0.0700  7
2   K   0.530   0.420   0.135   0.6770  0.2565  0.1415  0.2100  9
3   M   0.440   0.365   0.125   0.5160  0.2155  0.1140  0.1550  10
4   K   0.330   0.255   0.080   0.2050  0.0895  0.0395  0.0550  7
5   K   0.425   0.300   0.095   0.3515  0.1410  0.0775  0.1200  8
6   F   0.530   0.415   0.150   0.7775  0.2370  0.1415  0.3300  20

主要问题是lambda函数的输出:

.apply(lambda x:"K" if x<10)

其他条件的输出不确定,所以你可以使用else something ...

.apply(lambda x:"K" if x<10 else None)