我有以下 Pandas 数据框
df= SlNo Size
1 2
2 3
3 1
4 4
我已经创建了第二个列 - 基于属性是小于 2、等于 2 还是大于 2 的大小簇
df[['attribute']]=0
我想给属性列赋值,小于 2 的值为 V1,等于 2 的值为 V2,大于 2 的值为 V3。
SlNo Size attribute
1 2 V2
2 3 V3
3 1 V1
4 4 V3
我试过下面的循环
if df.Size<=1:
df.attribute="V1"
elif df.Size<=2 & df.Size>1:
df.attribute="V2"
else df.attribute= "V3"
这个循环无法完成这项工作。我在这里请求一些帮助
最佳答案
使用cut
,优点是 categorical
列可以节省内存并轻松添加新的 bins:
df['attribute'] = pd.cut(df['Size'], bins=[-np.inf,1,2, np.inf], labels=['V1','V2', 'V3'])
print (df)
SlNo Size attribute
0 1 2 V2
1 2 3 V3
2 3 1 V1
3 4 4 V3
print (df['attribute'])
0 V2
1 V3
2 V1
3 V3
Name: attribute, dtype: category
Categories (3, object): [V1 < V2 < V3]
关于python - 根据另一列的变量将 Pandas 中的值分配给一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51607574/