我想根据 Pclass 列的值1选择 Cabin 列行。 然后用1替换所选行Cabin列的值。
我做了以下代码,但它用1个偶数NaN值替换所有舱室列的值替换为1.如何我只能替换选定的行?
train['Cabin'] =train[train['Pclass']==1]['Cabin']=1
答案 0 :(得分:2)
您可以loc
选择列Cabin
的条件行并设置为标量:
train.loc[train['Pclass'] == 1, 'Cabin'] = 1
您的代码会将所有值替换为1
,因为它与:
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
答案 1 :(得分:0)
您可以直接过滤要更改的行并为其分配值,而不是过滤、替换然后分配给数据框。
所以
import {isObservable,Subscription} from 'rxjs';
@Component({
selector: 'hello',
template: `
<div *ngIf="yet">
<pre>{{obs}}</pre>
</div>
`
})
export class HelloComponent implements OnDestroy {
obs:any
yet:boolean=false; //a optional variable
subscription: Subscription //<--here store the subscription
@Input() set data(value){
if (isObservable(value)){
if (this.subscription)
this.subscription.unsubscribe();
this.subscription=value.subscribe(res=>{
this.obs=res;
this.yet=true
})
}
else{
this.yet=true
obs=value
}
}
ngOnDestroy(){
if (this.subscription){
this.subscription.unsubscribe();
this.subscription=null
}
}
变成
train['Cabin'] =train[train['Pclass']==1]['Cabin']=1