根据另一列的值一次创建新列

时间:2020-03-15 20:33:39

标签: python python-3.x pandas dataframe

我已经创建了一个熊猫数据框,我想应用几个函数,以基于数据框中列的值创建两个新列。假设原始数据帧是这样的:

    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)

这只是逻辑的一小段,但是数据框可能会变大,如果语句重复两次,则代价很高。我想知道是否可以使用索引或列表一次性动态分配这些值。

我们非常感谢您的帮助!

0 个答案:

没有答案