如何在panda的数据框中替换列的选定行的值?

时间:2017-12-23 14:35:53

标签: python pandas machine-learning anaconda

我有火车数据集,有12列。 enter image description here

我想根据 Pclass 列的值1选择 Cabin 列行。 然后用1替换所选行Cabin列的值。

我做了以下代码,但它用1个偶数NaN值替换所有舱室列的值替换为1.如何我只能替换选定的行?

train['Cabin'] =train[train['Pclass']==1]['Cabin']=1

2 个答案:

答案 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