在pandas_dataframe中,我尝试将数值转换为分类值
df['SalePrice_band']=0
df.loc[df['SalePrice']<50000 , 'SalesPrice_band']=1
df.loc[df['SalePrice']>=50000 & df['SalePrice']<100000 , 'SalesPrice_band'] = 2
df.loc[df['SalePrice']>=100000 & df['SalePrice']<125000 , 'SalesPrice_band'] = 3
df.loc[df['SalePrice']>=125000 & df['SalePrice']<150000 , 'SalesPrice_band'] = 4
df.loc[df['SalePrice']>=150000 & df['SalePrice']<175000 , 'SalesPrice_band'] = 5但是,上面的代码出现的错误是: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
因此,我阅读了错误消息并检查了
df.loc[df['SalePrice']<50000 , 'SalesPrice_band']=1上面的就可以了。
df['SalePrice']>=50000 & df['SalePrice']<100000但在这里,我通过两个bool_bin连接时出错
因此,我尝试这样做:
(df['SalePrice']>=50000 & df['SalePrice']<100000).all()但不起作用;仍然错误: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
我该怎么处理呢?
发布于 2021-01-17 19:13:55
在Pandas中,您必须将所有布尔检查放在括号中,如下所示:
df.loc[(df['SalePrice']>=50000) & (df['SalePrice']<100000) , 'SalesPrice_band'] = 2而不是这样:
df.loc[df['SalePrice']>=50000 & df['SalePrice']<100000 , 'SalesPrice_band'] = 2最新版本将导致您提供的错误
https://stackoverflow.com/questions/65759871
复制相似问题