我有两个 Dataframe 。
DF1
isActive,trackedSearchId
True,53436615
True,53434228
True,53434229
DF2
trackedSearchIds,Primary Keyword Group(s)
"[53436613, 53436615, 53437436, 53436506]",SEO - Directory-Deployment
"[53435887, 53437509, 53437441, 53436615, 53438685, 53437636]",SEO - Other-Glossary
"[53437504, 53435090, 53435887, 53434228]",SEO - Other
"[53437504, 53435090, 53434229]",SEO - Glossary
我想检查DF1的每一行的trackedSearchId列,并检查DF2中的每一行的trackedSearchIds数组的每个值,如果DF1列的值存在于DF2中,则将其与DF1一起附加。
输出应该是:
isActive,trackedSearchId,Primary Keyword Group(s)
True,53436615,SEO - Directory-Deployment&SEO - Other-Glossary
True,53434228,SEO - Other
True,53434229,SEO - Glossary
2条答案
按热度按时间lzfw57am1#
假设列表的字符串表示为df2,使用
ast.literal_eval
,然后使用groupby.agg
,explode
和merge
:输出:
hwamh0ep2#
如果需要,可以使用转换值的
DataFrame.explode
按ast.literal_eval
列出,在GroupBy.agg
中聚合join
并在DataFrame.join
中追加新列:如果值为列表: