python - 根据另一列中的变量将 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"
这个循环无法完成这项工作。我在这里请求一些帮助
解决方案
使用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]
推荐阅读
- gremlin - Gremlin 查询以列出相同标签的所有边
- python - 我正在尝试并行运行两个 python 脚本,然后能够从一个中提取变量以供另一个使用,这可能吗?
- json - 在 Kotlin Android 中检索多维数组 JSON
- python - django.urls.exceptions.NoReverseMatch:找不到带有关键字参数“{'pk':3}”的“草稿”。1
- apache-kafka - 手动重置 kafka 偏移量时,Flink 偏移量进入不一致状态
- javascript - 如何在使用 javascript 访问、未访问或悬停时更改链接的 css?
- python - Python 中 SET 的替代方案
- flutter - 如何在颤动中减小tapbar中的指示器大小
- javascript - 如何使用我的 express 服务器配置 socket.io?
- linux - ./error_prone.sh >>~/stdout.txt 2>>~/stderr.txt 有什么作用?