You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Pandas合并字典生成仅含title与author_name列的目标DataFrame?

如何通过Pandas合并字典生成仅含title与author_name列的目标DataFrame?

嗨,我来帮你排查问题啦~你之前的代码没得到想要的结果,核心原因是合并时选错了关联列——你用title和author_name来匹配,这俩列的内容完全不搭边,自然匹配不到任何数据啦。

咱们一步步来解决这个问题:

第一步:先把字典转换成Pandas DataFrame

首先得把你手里的两个字典转成DataFrame,这是Pandas操作的基础:

import pandas as pd

game_data = {
    'game_id': range(1, 6),
    'title': ('LOL', 'WH40K', 'WOW', 'POE', 'KEK'),
    'author_id': (1, 1, 2, 3, 5),
    'genre_id': (1, 2, 4, 4, 1),
    'price': (0, 0, 14, 19, 100)
}

author_data = {
    'author_id': (1, 2, 3, 4),
    'author_name': ('Graham McNeill', 'Christie Golden', 'Nick Jones', 'Slaik')
}

# 转换为DataFrame
df_game = pd.DataFrame(game_data)
df_author = pd.DataFrame(author_data)

第二步:用正确的关联键合并DataFrame

两个表之间的关联键是author_id——游戏数据里的author_id对应作者数据里的author_id,咱们用这个键来做内连接(只保留两边都有匹配的行,这样就能自动过滤掉KEK那个没有对应作者的数据):

# 基于author_id合并,只保留匹配的行
merged_df = pd.merge(df_game, df_author, on='author_id', how='inner')

第三步:筛选出需要的列

合并后的数据会包含所有列,咱们只挑title和author_name这两列就行:

result_df = merged_df[['title', 'author_name']]
print(result_df)

运行之后就能得到你想要的结果啦:

title     author_name
0    LOL  Graham McNeill
1  WH40K  Graham McNeill
2    WOW  Christie Golden
3    POE       Nick Jones

再啰嗦两句为啥之前的代码不行

你之前写的left_on='title', right_on='author_name',相当于让Pandas去匹配“游戏标题”和“作者名字”完全相同的行——比如找有没有叫LOL的作者,显然不存在,所以合并后是空的DataFrame,自然看不到结果啦。以后合并表的时候,一定要找两个表之间有对应关系的共同字段哦~

备注:内容来源于stack exchange,提问作者Nickochka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:50:29