这是我的数据集
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.If"戒指"值小于10相应的"性别"价值应改为' K'。否则,不应该在"性别"中进行更改。表
fake_abalone2["sex"]=fake_abalone2["Rings"].apply(lambda x:"K" if x<10)
文件&#34;&#34;,第1行 fake_abalone2 [&#34; sex&#34;] = fake_abalone2 [&#34; Rings&#34;]。apply(lambda x:&#34; K&#34;如果x&lt; 10)
SyntaxError:语法无效
答案 0 :(得分:2)
以下方法效果很好。
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
答案 1 :(得分:1)
您可以使用Python numpy而不是lambda函数。
使用import numpy as np
然后您可以使用以下方法替换字符串。
fake_abalone2['Sex'] = np.where(fake_abalone2['Rings']<10, 'K', fake_abalone2['Sex'])
答案 2 :(得分:0)
主要问题是lambda函数的输出:
.apply(lambda x:"K" if x<10)
对于其他条件,输出不确定,因此可以使用 else ...
.apply(lambda x:"K" if x<10 else None)