当前位置: 首页 > 知识库问答 >
问题:

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

颜志学
2023-03-14

例如,假设我有一个df

a    b     c       

1    3     5       
5    9     4      

我有if条件:

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

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

a    b     c    d

1    3     5    3 
5    9     4    13

编辑:理想情况下,我想创建一个函数,允许我

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

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

共有2个答案

谭宜
2023-03-14

您可以使用应用方法

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))

如您所愿编辑自定义函数

子车勇锐
2023-03-14

可以沿着轴1使用应用函数

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
 类似资料:
  • 我正在尝试使用一个函数从pandas数据帧中的多个列计算多个列。该函数接受三个参数-a-、-b-和-c-,并返回三个计算值-sum-、-prod-和-quot-。在我的pandas数据框架中,我有三个列-a-、-b-和-c-我想从中计算列-sum-、-prod-和-quot-。 我所做的映射只有在正好有三行时才起作用。我不知道出了什么问题,尽管我认为这与选择正确的轴有关。有人能解释一下发生了什么,

  • 问题内容: 我正在尝试根据多个条件来计算不同的值。 下面包括样本数据练习。 可以在多个测试中找到给定的错误,对于同一测试(例如:6)可以找到多次,或者两者(例如:5)都可以找到。 以下查询可以很好地准确交付“ Total Bugs” 我的研究使我对以下查询产生了变化。 他们错过了独特的错误,因此对于“打开错误”列返回错误的结果(显示在查询下方) 当然,我的最终结果必须在一个表中同时提供两个计数列(

  • 我用的是spark 2.1,脚本是pyspark。请帮我一下,因为我被困在这里了。 问题陈述:根据多列的条件创建新列 输入<code>数据帧<code>如下 现在我需要创建一个新列作为FLG,我的条件是如果

  • 问题内容: 我如何使用JPA条件API执行以下操作: 使用CriteriaBuilder.countDistinct在一个列/路径上执行此操作很简单,但是如何在两个路径/列上执行此操作? 问题答案: 这是一个较晚的答案:-)尽管我不确定情况是否有所改变。 最近,我遇到了非常相同的需求,并使用concat解决了该需求,即通过将列连接为 伪列 ,然后将其连接到 伪列 上。 但是我不能使用,因为它生成了

  • 我想用另一个DF的行中的名称替换DF的一些列名称 如何用df2中的“狗”和“猫”替换df1中的“T1”和“T2”?

  • 问题内容: 我在Sqlite中有一个查询,其中涉及复杂的列计算,可以这样说: 我想将此计算选择为,但我还需要将其用作另一种计算的组成部分: 不幸的是,这会产生错误: 我知道我可以简单地重复计算: 但是,假设操作复杂且昂贵,是否有什么方法可以在以后重新引用它而不必重新计算呢? 问题答案: 您需要使用子查询。 结果