应用 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)
这是我的数据集
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
那么就可以使用下面的方法来替换字符串了
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)