首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过搜索两个数据帧来创建pandas数据帧

通过搜索两个数据帧来创建pandas数据帧
EN

Stack Overflow用户
提问于 2018-01-09 19:19:07
回答 2查看 290关注 0票数 1

我有两只熊猫DataFrames:

第一个表Artist-Name DataFrameIMDb上的每个参与者都有一个惟一的标识符,并具有相应的参与者名称。

第二个表Movie-Cast DataFrame对IMDb上的每部电影和对应电影的前7位付费演员都有一个唯一的标识符(艺术家代码对应于第一个表中演员的唯一标识符)。

我想创建一个新的演员-电影DataFrame,它将艺术家的名字作为第一列,后续的列是所有的演员已经出现的电影。因此,我想使用表1中的"nconst“搜索表2中的每个电影的"principalCast”列,如果演员出现在"principalCast“位置之一(1-7),则将演员出现的电影标题作为列添加到新的演员-电影DataFrame中。最终,我希望有一个包含许多列的表,其中包含艺术家参与的所有电影。

我尝试过合并和旋转DataFrames,但没有成功。我还尝试使用带有两个for循环的迭代组:

代码语言:javascript
复制
for row in actor_names.itertuples():
ldic = []
for r in movie_cast.itertuples():
    if row[1] in [r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10]]:
        ldic.append({row[1]:[].append(r[2])})

itertuples需要几个小时,并且不会产生任何结果(我的整个电影数据库>2000行,演员数据库>800万行)。然而,上面的代码是我正在操作的有问题的逻辑。

有没有一种有效的方法可以通过使用表1的唯一参与者标识符来搜索表2中的每个"principalCast“(1-7)来创建新的DataFrame?我想要的输出是:

代码语言:javascript
复制
**primaryName     | nconst    |   movie 1    |   movie 2  | ... | movie n**

Brad Pitt         | nm0000015 | Fight Club   |   Seven    | ... | Mr&Mrs Smith

Jennifer Lawrence | nm0000109 | Mother       |Hunger Games| ... | Serena

没有特定的电影顺序,只需要一个演员参与的电影数据库。

EN

回答 2

Stack Overflow用户

发布于 2018-01-10 03:05:58

这是我会怎么做的。

  1. 从第一个数据帧中删除不相关的列:

inplace=True)

  • Get (‘birthYear’,'deathYear',axis=1,actor_names.drop列第二个数据帧中的演员名称:

如果对我们刚获得的每个列名进行column.startswith('principalCast')

  • Run合并,并且只留下我们需要的列,则cast_columns = movie_cast.columns中的列:

对于cast_columns中的cast_column : actor_names = actor_names.merge(movie_cast,how='left',left_on='nconst',right_on=cast_column) valid_columns = actor_names.columns中的列如果( ('nconst','primaryName')中的列或column.startswith(‘originalTitle’)中的列) actor_names =nconst

票数 2
EN

Stack Overflow用户

发布于 2018-01-09 19:35:19

我没有测试它,但我猜是这样的:

代码语言:javascript
复制
 pd.merge(actor_names, movie_cast,how='left',left_on=['nconst'], right_on = ['principalCast1','principalCast2',.....])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48167040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档