Создать словарь по первому DataFrame
по zip
- здесь указаны целые числа ключей, поэтому при необходимости в понимании списка get
преобразует строки в int
s для правильных значений соответствия:
d = dict(zip(df1['doc_id'], df1['name']))
print (d)
{1: 'tamil.sh', 2: 'english.sh', 3: 'maths.sh'}
#values are strings, so converting to integers is necessary
print (df2.loc[0, 'doc_id'])
['1', '2']
df2['doc_id'] = df2['doc_id'].apply(lambda x: [d.get(int(y),y) for y in x])
print (df2)
doc_id count
0 [tamil.sh, english.sh] 3
1 [english.sh, maths.sh] 4