如何使用 df 中的多个列来运行多个条件来计算新列? [复制]

Posted

技术标签:

【中文标题】如何使用 df 中的多个列来运行多个条件来计算新列? [复制]【英文标题】:How to use multiple columns from a df to run multiple conditions to calculate new column? [duplicate] 【发布时间】:2019-06-08 16:39:48 【问题描述】:

例如,假设我有一个df

a    b     c       

1    3     5       
5    9     4      

我有ifconditions:

if a < 2:
   3
elif  a < 3:
   4
else: b + c

如何测试条件并为我的 df 的每一行返回结果,如下所示?

a    b     c    d

1    3     5    3 
5    9     4    13

编辑:理想情况下,我想创建一个function,让我可以

def function(a, b, c) df['d'] = function(a, b, c)

并计算所有数据行。因为在实际数据中,有100+条条件语句和10s列。

【问题讨论】:

用 np.select 检查 从可能重复的pandas create new column based on values from other columns 中查看this answer。 【参考方案1】:

你可以使用apply方法:

def custom_calc(x, a , b):
    if x[0] < 2:
        return 3

    if x[0] > 3:
        return x + a + b

df.a = df[['a', 'b', 'c']].apply(func=check, args=(df.b,df.c))

根据需要编辑自定义函数

【讨论】:

【参考方案2】:

您可以沿轴 1 使用apply 函数。

def f(row):
    if row['a'] > 2:
        return 3
    elif row['a'] > 3:
        return 4
    else:
        return  row['b']+row['c']


df.apply(f,axis=1)

#output
0    8
1    3
dtype: int64

【讨论】:

以上是关于如何使用 df 中的多个列来运行多个条件来计算新列? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark.sql.functions.when() 中使用多个条件?

跨多个数据框计算新列

在 pandas 0.16+ 中,如何使用变量添加列来指示列名?

如何使用 df.loc(或其他方法)根据特定条件创建新列?

如何创建一个新列来指定日期所属的年份范围(如学年)?

如何在pyspark数据框中添加多个带有when条件的新列?