First columns are converted to lists by function str.split.
If indexes
are same in both dataframes, you can easily add column from one df
to another.
You can apply difference of sets converted from lists of columns and then convert to list. You have to use axis=1
, because apply function to each row.
print df
# elem1
#0 a,c,v,b,n
#1 b
#2 c,x,a
print df1
# elem2
#0 j,k,a,i,v
#1 o,b
#2 g,f,w
#convert to lists
df['elem1list'] = df['elem1'].str.split(',')
df1['elem2list'] = df1['elem2'].str.split(',')
#add column from df1
df['elem2list'] = df1['elem2list']
print df
# elem1 elem1list elem2list
#0 a,c,v,b,n [a, c, v, b, n] [j, k, a, i, v]
#1 b [b] [o, b]
#2 c,x,a [c, x, a] [g, f, w]
df['elem'] = df.apply(lambda x: list(set(x['elem2list']).intersection(x['elem1list'])), axis=1)
print df
# elem1 elem1list elem2list elem
#0 a,c,v,b,n [a, c, v, b, n] [j, k, a, i, v] [a, v]
#1 b [b] [o, b] [b]
#2 c,x,a [c, x, a] [g, f, w] []