在一个数据帧中,我想根据对其他列的筛选,将一个值赋给一个列

2024-10-01 17:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我想将“ModelPrediction”列中的所有值都更改为1,其中“AgeGrp”列等于[0,5],“Sex”列等于male,“PClass”列等于“1”和“2”。你知道吗

我已经将AgeGrp,Pclass列的数据类型更改为object。你知道吗

table

我的尝试如下:

train.loc[train['Sex'] == 'male' & ['Pclass'] == 1 & ['Pclass'] == 2 & ['AgeGrp'] == (0, 5], 'ModelPrediction'] = 1  

我对Python/熊猫的所有东西都很陌生,任何帮助都很感激!!谢谢您!你知道吗


Tags: objecttrainlocmale数据类型陌生sexpclass
2条回答

很接近,但有一个条件Pclass同时是1和2,这是不可能的,间隔的语法不存在,您需要用括号分隔每个条件:

train.loc[(train['Sex'] == 'male') & ((train['Pclass'] == 1) | (train['Pclass'] == 2)) & (train['AgeGrp'] > 0) & (train['AgeGrp'] <= 5), 'ModelPrediction'] = 1

我认为您需要添加()^{},而且Pclass有两个条件,我认为需要^{}在这里如果需要检查两个值:

train = pd.DataFrame({'Sex':['male','female','male'],
                      'Pclass':[1,0,1],
                      'AgeGrp':[pd.Interval(0, 5, closed='right'),
                                pd.Interval(6, 10, closed='right'),
                                pd.Interval(0, 5, closed='right')],
                        'ModelPrediction':[0,1,0]})
print (train)
      Sex  Pclass   AgeGrp  ModelPrediction
0    male       1   (0, 5]                0
1  female       0  (6, 10]                1
2    male       1   (0, 5]                0

train.loc[(train['Sex'] == 'male') & 
          (train['Pclass'].isin([1, 2])) & 
          (train['AgeGrp'] == pd.Interval(0, 5, closed='right')), 'ModelPrediction'] = 1  

print (train)
      Sex  Pclass   AgeGrp  ModelPrediction
0    male       1   (0, 5]                1
1  female       0  (6, 10]                1
2    male       1   (0, 5]                1

相关问题 更多 >

    热门问题