替换

时间:2018-04-24 09:11:14

标签: python python-3.x pandas dataframe

这是我的数据集,其中有四列。我想将 survival_status 列中的值(1' s和2' s)替换为(Negative和Postive)。我正在使用熊猫来改变价值观。

 Age  operation_year  axillary_nodes_detected  survival_status
0   30              64                        1                1
1   30              62                        3                1
2   30              65                        0                2
3   31              59                        2                1
4   31              65                        4                2

Haberman["survival_status"] = Haberman["survival_status"].apply(lambda x : 'Positive' if x == 2 else 'Negative')

应用之后,它将整个列值更改为负值。

Haberman['survival_status'].value_counts()
Negative    306
Name: survival_status, dtype: int64

有谁能告诉我我哪里做错了?

2 个答案:

答案 0 :(得分:1)

更好的解决方案是使用numpy.where并首先将列转换为integer

Haberman["survival_status"] = np.where(Haberman["survival_status"].astype(int) == 2,
                                       'Positive','Negative')

答案 1 :(得分:1)

一种方法是使用字典映射。但首先请确保您的数据框已转换为int

df = df.astype(int)

d = {2: 'Positive', 1: 'Negative'}

df['survival_status'] = df['survival_status'].map(d)

结果:

print(df)

   Age  operation_year  axillary_nodes_detected survival_status
0   30              64                        1        Negative
1   30              62                        3        Negative
2   30              65                        0        Positive
3   31              59                        2        Negative
4   31              65                        4        Positive