基于多个if else条件的python pandas列

时间:2017-06-10 10:28:57

标签: python python-2.7 pandas data-manipulation

我的pandas数据框中有4列,列名称可以说,A,B,C,D各自映射到UI中的字段。每个都有自己的目的,但是用户在字段A或B或C或D中输入字段A信息。我正在尝试清理数据并将其带到A列进行分析。因此,如果A列中有任何值,我不关心B或C或D中的值。但是如果A列中没有值,那么我必须在其他列中查找用户条目并将其带入列A.列A的实际值始终以列表中的某些值开头。因此,如果A列中没有数据,那么我们必须查找B列中的值,看看它是否具有列表中的值,然后将其带到A,如果列B也为空或者它有一些除了列表中的值之外的其他值,保留并在C列中检查相同,类似于D列。如何在python中执行此操作?

如果有任何不清楚的地方,请告诉我。

实施例,

mylist = ['senior','junior','midlevel']

inputdf

 A        B      C          D
senior  male   senior     UK
        senior candidate  USA
        female junior     
junior  male   junior     AU
        male   candidate  midlevel
        female candidate  AU


Outputdf,

A           B        C         D
senior     male     senior     UK
senior     senior  candidate   USA
junior     female  junior  
junior     male    junior      AU
midlevel   male    candidate  midlevel
           female  candidate  AU

1 个答案:

答案 0 :(得分:0)

您可以使用apply函数迭代df并将值返回到“A”列。

def func(row):
    for index_val, series_val in row.iteritems():
        if (series_val in mylist):
            return series_val

df['A'] = df.apply(func, axis = 1)

此代码检查A中是否存在mylist中的值。如果是,则返回该值,否则继续并检查B,然后依此类推。