【发布时间】:2020-10-11 05:16:26
【问题描述】:
我想创建一个新列,并根据索引号从第二列给它值。
数据框是df4。现有列是SalePrice,我要创建的新列是Label。
我希望 Label 根据 SalePrice 的索引号有 3 个不同的值,因为 SalePrice 是根据其值排序的。
我是这样处理的:
df4.loc[df4.SalePrice.index<int(len(df4.SalePrice.index)/3),"Label"]="Expensive"
df4.loc[df4.SalePrice.index>int(len(df4.SalePrice.index)/3),"Label"]="medium"
df4.loc[df4.SalePrice.index>int(len(df4.SalePrice.index)*2/3),"Label"]="Low"
所以这行得通,但我认为可能有更有效和更好的方法...我尝试在第二个命令行中使用范围
df4.loc[df4.SalePrice.index>int(len(df4.SalePrice.index)/3)& df4.SalePrice.index<int(len(df4.SalePrice.index)*2/3),"Label"]="Medium"
然后我得到:
"TypeError: unsupported operand type(s) for &: 'int' and 'RangeIndex'"
我将不胜感激!
【问题讨论】:
标签: python pandas dataframe conditional-statements slice