loc
根据Cabin
列的条件选择行,并将其设置为标量值。train.loc[train['Pclass'] == 1, 'Cabin'] = 1
由于以下代码相同,因此您的代码将所有值替换为1
:
1 == true
train['Cabin'] = 1
示例:
train = pd.DataFrame({'Pclass':[1,2,3,1,2],
'Cabin':[10,20,30,40,50]})
print (train)
Cabin Pclass
0 10 1
1 20 2
2 30 3
3 40 1
4 50 2
train.loc[train['Pclass'] == 1, 'Cabin'] = 1
print (train)
Cabin Pclass
0 1 1
1 20 2
2 30 3
3 1 1
4 50 2
你可以直接筛选要更改的行并将值分配给它,而不是筛选、替换,然后再分配给数据框。
所以
train['Cabin'] =train[train['Pclass']==1]['Cabin']=1
变成
train['Cabin'][train['Pclass']==1] = 1
train.loc[train['Pclass'] < 3, 'Cabin'] = train.loc[train['Pclass'] < 3, 'Pclass']*2
,但是我既没有得到结果也没有出现错误... - AstroFloyd