In Pandas, how to create a unique ID based on the combination of many columns?

I think you can use factorize:

df['combined_id'] = pd.factorize(df.B+df.C)[0]
print df
            B              C  combined_id
0  john smith  indiana jones            0
1    john doe   duck mc duck            1
2  adam smith         batman            2
3    john doe   duck mc duck            1
4         NaN            NaN           -1

Making jezrael's answer a little more general (what if the columns were not string?), you can use this compact function:

def make_identifier(df):
    str_id = df.apply(lambda x: '_'.join(map(str, x)), axis=1)
    return pd.factorize(str_id)[0]

df['combined_id'] = make_identifier(df[['B','C']])

Tags:

Python

Pandas