首页 > 解决方案 > 根据另一列中的变量将 Pandas 中的值分配给一列

问题描述

我有以下熊猫数据框

  df= SlNo Size 
       1     2     
       2     3
       3     1
       4     4

我根据属性是否小于 2、等于 2 或大于 2 创建了第二列 Size 集群

    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"

这个循环无法完成这项工作。我在这里请求一些帮助

标签: pythonpandasdataframe

解决方案


使用cut,优点是categorical节省内存和轻松添加新箱的列:

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]

推荐阅读