根据 Python Dataframe 中另一列的数值在新列中分配分类或值

Assigning categorical or values in a new column based on numeric values from another column in Python Dataframe

我有一个数据框,其中有一列(比如“总计”)包含数字数据。此列中的数据可以是正数、负数或零。零的两边没有范围限制。

我想根据此 'Total' 列中的值创建另一个包含特定指标或分类值的列。

例如(目标):

  1. P/N/Z 基于 'Total' 列中的 Positive/Negative/Zero 值。
  2. 类 例如“...0-10000,10000-20000,...”基于 'Total' 列中的值
  3. +1,-1,0 基于大于、小于、等于 'Total' 列中特定值的值。

截至目前,我通过 if-else 语句遍历 'Total' 列中的每一行来创建一个单独的值列表,然后将该值列表作为一列附加到数据框。

for each in df['Total']:
    values.append(cat1(each))
df['newcol'] = values

这里的cat1是returnsP/N/Z基于positive/negative/zero值的函数。 values 是我将使用此 for 循环创建的值列表。同样,我有上述目标中的 2 和 3 函数。

def cat1(value):
if value > 0:
    return "P"
elif value < 0:
    return "N"
else:
    return "Z"

但我希望有一个更简单、更快的替代方案?

感谢您的帮助。

我不知道这种方法是否更快,但它肯定更好地利用了 pandas 功能:

def cat1(value):
    if value > 0:
        return "P"
    elif value < 0:
        return "N"
    else:
        return "Z"
df[newcol] = df.apply(lambda row: cat1(row['Total']), axis = 1)