Предположим, у нас есть два кадра данных Pandas следующим образом:
df1 = pd.DataFrame({'id': ['a', 'b', 'c']})
df1
id
0 a
1 b
2 c
df2 = pd.DataFrame({'ids': [['b','c'], ['a', 'b'], ['a', 'z']],
'info': ['asdf', 'zxcv', 'sdfg']})
df2
ids info
0 [b, c] asdf
1 [a, b] zxcv
2 [a, z] sdfg
Как мне объединить / объединить строки df1
с df2
, где df1.id
находится в df2.ids
?
Другими словами, как мне добиться следующего:
df3
id ids info
0 a [a, b] asdf
1 a [a, z] sdfg
2 b [b, c] asdf
3 b [a, b] zxcv
4 c [b, c] asdf
А также версия выше, агрегированная на id
, например так:
df3
id ids info
0 a [[a, b], [a, z]] [asdf, sdfg]
2 b [[a, b], [b, c]] [asdf, zxcv]
3 c [[b, c]] [asdf]
Я пыталсяследующее:
df1.merge(df2, how = 'left', left_on = 'id', right_on = 'ids')
TypeError: unhashable type: 'list'
df1.id.isin(df2.ids)
TypeError: unhashable type: 'list'