首页 > 解决方案 > 根据另一列的值一次创建新列

问题描述

我创建了一个 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 语句可能会很昂贵。我想知道是否有一种方法可以使用索引或列表一次性动态分配这些值。

非常感谢任何帮助!

标签: pythonpython-3.xpandasdataframe

解决方案


推荐阅读