Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的Case条件_Python_Python 3.x_Pandas_Case - Fatal编程技术网

Python中的Case条件

Python中的Case条件,python,python-3.x,pandas,case,Python,Python 3.x,Pandas,Case,我试图在python中实现一个case条件 Sql等价物如下所示- case when entered_by = created_by_user then entered_by when entered_by = entered_by then entered_by when modified_by = created_by_user then modified_by when modified_by = entered_b

我试图在python中实现一个case条件

Sql等价物如下所示-

case when entered_by = created_by_user then entered_by
            when entered_by = entered_by then entered_by
            when modified_by = created_by_user then modified_by
            when modified_by = entered_by then modified_by
      end as "AD_ID" 
我已经编写了下面的pandas代码来实现上述功能,但是出现了一个错误-

def func(row):
    if dftemp['entered_by'] == dftemp['created_by_user']:
        return dftemp['entered_by']
    elif dftemp['entered_by'] == dftemp['entered_by']:
        return dftemp['entered_by']
    elif dftemp['modified_by'] == dftemp['created_by_user']:
        return dftemp['modified_by']
    elif dftemp['modified_by'] == dftemp['entered_by']:
        return dftemp['modified_by']    
    else:
        return 'other'

dftemp['AD_ID'] = dftemp.apply(func, axis=1)
我得到下面的错误-

ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', u'occurred at index 0')
有没有更好的方法实现同样的目标

谢谢

@驴子孔-我尝试了下面的,没有工作-

def func(row):
    if assert_series_equal(dftemp['entered_by'], dftemp['created_by_user']):
        return dftemp['entered_by']
    elif assert_series_equal(dftemp['entered_by'], dftemp['entered_by']):
        return dftemp['entered_by']
    elif assert_series_equal(dftemp['modified_by'], dftemp['created_by_user']):
        return dftemp['modified_by']
    elif assert_series_equal(dftemp['modified_by'], dftemp['entered_by']):
        return dftemp['modified_by']    
    else:
        return 'other'

dftemp['AD_ID'] = dftemp.apply(func, axis=1) 

func将行作为参数,但不使用它。所有dftemp变量都应为row。此外,我认为这更干净:

def func(row):
    if assert_series_equal(row.entered_by in [row.created_by_user, row.entered_by]):
        return dftemp.entered_by
    if assert_series_equal(row.modified_by in [row.created_by_user, row.entered_by]):
        return dftemp.modified_by 
    return 'other'