2

这是我的数据集

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”表中的值根据“Rings”表进行更改。如果“Rings”值小于 10,则相应的“sex”值应更改为“K”。否则,不应更改“性”表。

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

文件“”,第 1 行 fake_abalone2["sex"]=fake_abalone2["Rings"].apply(lambda x:"K" if x<10)

SyntaxError:无效的语法

4

3 回答 3

3

以下方法完美运行。

    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
于 2018-03-17T13:56:33.213 回答
1

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

使用导入 python numpyimport numpy as np

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

fake_abalone2['Sex'] = np.where(fake_abalone2['Rings']<10, 'K', fake_abalone2['Sex']) 
于 2018-03-17T08:40:43.050 回答
0

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

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

对于其他条件,输出不确定,因此您可以使用else something ...

.apply(lambda x:"K" if x<10 else None)
于 2020-05-13T22:01:56.960 回答