如何通过pandas.factorize识别多种情况?

时间:2019-05-06 09:57:54

标签: python pandas dataframe uniqueidentifier

我读了this,它谈论的是pd.factorize来标识并创建用于用户标识的唯一值。

但是,在我的情况下,我想应用OR条件的多重条件来识别用户,并且该条件具有重要性排序。

例如: df:

cond_1(email)  cond_2(phone)  cond_3(other)
abc@yahoo.com  12345678       qwe
asd@yahoo.com  789456123      rty
abc@yahoo.com  905132312      zxc
dsds@yahoo.com 789456123       po
abc@yahoo.com  789456123      special

预期:

cond_1(email)  cond_2(phone)  cond_3(other) unique_id
abc@yahoo.com  12345678       qwe            1
asd@yahoo.com  789456123      rty            2  
abc@yahoo.com  905132312      zxc            1
dsds@yahoo.com 789456123       po            2
abc@yahoo.com  789456123      special        1

1 个答案:

答案 0 :(得分:1)

IIUC,您可以这样做:

df['unique_id']=df.apply(lambda x: pd.factorize(x)[0]+1).min(axis=1)
print(df)

    cond_1(email)  cond_2(phone) cond_3(other)  unique_id
0   abc@yahoo.com       12345678           qwe          1
1   asd@yahoo.com      789456123           rty          2
2   abc@yahoo.com      905132312           zxc          1
3  dsds@yahoo.com      789456123            po          2
4   abc@yahoo.com      789456123       special          1