Python 如何根据两个不同栏目的分数组成三个不同的班级,有人能指导我吗,请参考我的代码 如果ios_得分>0.5,android_得分0.5,android_分数>0.5,则在输出列中将其分组为“ios+android用户”
我试着使用下面的代码,但我得到了TypeError TypeError:无法使用数据类型为[float64]的数组和类型为[bool]的标量执行“rand_u2;”Python 如何根据两个不同栏目的分数组成三个不同的班级,有人能指导我吗,请参考我的代码 如果ios_得分>0.5,android_得分0.5,android_分数>0.5,则在输出列中将其分组为“ios+android用户”,python,pandas,dataframe,Python,Pandas,Dataframe,我试着使用下面的代码,但我得到了TypeError TypeError:无法使用数据类型为[float64]的数组和类型为[bool]的标量执行“rand_u2;” scores_df.sample(5) O/P names ios_score android_score Output A1 0.428571 0.571429 ? A2 0.541667 0.708333 ? A3 0.33333
scores_df.sample(5)
O/P
names ios_score android_score Output
A1 0.428571 0.571429 ?
A2 0.541667 0.708333 ?
A3 0.333333 0.485714 ?
scores_df.loc[(scores_df['ios_score'] > 0.5 & scores_df['android_score'] < 0.5 ), 'output'] = "iOS"
scores_df.loc[(scores_df['ios_score'] < 0.5 & scores_df['android_score'] > 0.5 ), 'output'] = "Android"
scores_df.loc[(scores_df['ios_score'] > 0.5 & scores_df['android_score'] > 0.5 ), 'output'] = "iOS + Android"
scores_df.head()
分数样本(5)
O/P
命名ios_分数android_分数输出
A1 0.428571 0.571429?
A2 0.541667 0.708333?
A3 0.333333 0.485714?
分数df.loc[(分数df['ios_分数']>0.5和分数df['android_分数']<0.5),'output']=“ios”
分数df.loc[(分数df['ios_分数']<0.5和分数df['android_分数']>0.5),'output']=“android”
得分_-df.loc[(得分_-df['ios_-score']>0.5和得分_-df['android_-score']>0.5),'output']=“ios+android”
总分()
使用np。选择
可以指定要检查的条件列表,如果各个条件匹配,则可以指定要输出的值列表:
df['Output'] = np.select([
((df['ios_score'] > 0.5) & (df['android_score'] > 0.5)),
(df['ios_score'] > 0.5),
(df['android_score'] > 0.5)],
['iOS + Android', 'iOS', 'Android'], default='Other')
df
输出:
names ios_score android_score Output
0 A1 0.428571 0.571429 Android
1 A2 0.541667 0.708333 iOS + Android
2 A3 0.333333 0.485714 Other
我相信您缺少括号,因为&的优先级高于
。。。((分数df['ios\u score']>0.5)和(分数df['android\u score']<0.5))
@piterberg是的,你是正确的,在添加括号后,工作正常。非常感谢你的作品!np.select选项真的很有趣,非常感谢您分享。太好了,我很高兴它有帮助!