我有两个数据框-
一个数据框具有一列,其中包含音乐艺术家的列表(每行一个艺术家)。有1万行。此数据包含每个艺术家的人口统计资料(国家/地区,年龄)。
艺术家。 | 年龄 | 国家 |
---|---|---|
德雷克 | 34 | 那 |
史努比·道格 | 49 | 我们 |
还有另一个数据框,其中包含一列艺术家及其歌曲。-此数据32,000行
艺术家。 | 歌名 |
---|---|
[史努比·道格,达兹·迪林格] | 歌曲名称1 |
[第二] | 歌曲名称2 |
我无法将艺术家从第一个数据帧匹配到第二个数据帧,因为在第二个数据帧中有Snoop Dogg和其他艺术家。我尝试使用grepl运行一些代码,并根据Artist的第一个数据帧列创建了一个向量,以匹配第二个数据帧中的Artist列,但它运行的是“内存不足”。我也取消了数据嵌套,但这给了我一个大错误,原因是:
错误:必须为子集列加上有效的下标向量。x下标的类型错误data.frame< X : integer index : integer artist : character gender : character age : integer type : character country : character city_1 : character district_1: character city_2 : character district_2: character city_3 : character district_3: character >
。must必须是数字或字符。运行`rlang :: last_error()
所需的输出如下:
艺术家。 | 歌名 | Artist_Matched | 年龄 | 国家 |
---|---|---|---|---|
[史努比·道格,达兹·迪林格] | 歌曲名称1 | 史努比·道格 | 49 | 我们 |
[第二] | 歌曲名称2 |
我尝试过的一些代码-
df3 <-cbind(df3,是= grepl(粘贴(art_v,折叠=“ |”),df3 $ art))
grepl(paste(art_v,崩溃=“ |”),df3 $ art)中的错误:正则表达式无效,原因是“内存不足”
非常感谢您的帮助!
我还没有尝试过python。我所有的代码都在R中,但是如果您有关于如何在python中执行此操作的建议,请务必打开它!
您可以使用Pandas爆炸带有列表的列。然后合并数据框。
就像是:
pd.merge( df1.explode('Artist'), df0, on='Artist')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句