python - 根据另一列的变量将 Pandas 中的值分配给一列

标签 python pandas dataframe

我有以下 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/

相关文章:

dataframe - 将组特定函数应用于 Julia 数据框

python - 如何对pandas数据框中的复杂条件求和

r - 如何在R数据框中添加不同长度的前导零

python - 如何使用 python 生成 0 和 1 组合的 PBM

python - 将 1D 函数扩展到 3 个维度以进行数据窗口

python - 在 python 中有什么方法可以在 html 中找到图像的大小?

python - pandas 连接具有重复索引的列

python - Pandas 根据另一列的条件申请

python asyncore 在客户端连接后使用 100% CPU

python - 如何使用python从HTML文件中读取数据并将数据写入CSV文件?