这是我的数据集,其中有四列。我想将 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
有谁能告诉我我哪里做错了?
答案 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