python - 根据另一列的值一次创建新列
问题描述
我创建了一个 pandas 数据框,我想应用几个函数,以根据数据框中的列的值创建两个新列。假设原始数据框是这样的:
name sum
0 attr_1 900
1 attr_2 20000
2 attr_3 60000
我想创建一个函数,该函数基于 sum 列创建两个新列,如下所示:
name sum score rank
0 attr_1 900 0 low
1 attr_2 20000 3 med
2 attr_3 60000 7 high
现在我有一个简单的 if 语句,逐行执行并分配score
列,然后我将为列创建相同的逻辑score
来创建rank
列:
def score(row):
val = None
if row['count_sum'] < 1000:
val = 0
elif 1000 < row['count_sum'] < 30000:
val = 3
elif 30000 < row['count_sum'] < 70000:
val = 7
else:
val = 10
df['score']=df.apply(score, axis=1)
这只是逻辑的一小部分,但数据框可能会变得很大,并且通过两次 if 语句可能会很昂贵。我想知道是否有一种方法可以使用索引或列表一次性动态分配这些值。
非常感谢任何帮助!
解决方案
推荐阅读
- java - 如何在使用 Graphics 的 Abstract 所需的方法中使用 Graphics2D
- c++ - c ++预期的左大括号以及重新定义错误
- java - 有没有办法将一个方法用作 Java 中另一个方法的输入变量?
- c# - 如何等待方法完成然后执行新操作?
- c# - C#:FileStream.ReadByte() 是多线程友好函数吗?
- java - 为什么我的 Eclipse JRE 库 JDK 13 未绑定?
- azure - 是否可以将更改源处理器主机作为 Azure Web 作业运行?
- c++ - Stack Smashing 在纸牌游戏中检测到 C++
- .net-core - 使用 EF 保存实体并使用 SignalR 以相同的方法向客户端发送消息
- node.js - “响应”类型上不存在属性“本地人”