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

Pandas中处理两个DataFrame:为单ISBN行DF添加分类计数列

解决方法:通过数据透视+合并实现需求

你的问题出在直接比较两个DataFrame的ISBN列时,因为x是多行对应同一个ISBN,而y是单行对应一个ISBN,这种直接的布尔匹配会因为索引和长度不匹配导致对齐错误,赋值自然无法得到正确结果。

推荐用数据透视+合并的方式来实现,步骤清晰且不易出错:

步骤1:对x进行数据透视,将分类转为列

先把x中同一ISBN的不同分类计数整理成宽表格式,每个ISBN对应一行,分类作为列:

import pandas as pd

# 用pivot_table处理,fill_value=0确保没有对应分类时计数为0
x_pivot = x.pivot_table(
    index='ISBN',
    columns='Age Category',
    values='Count',
    fill_value=0
).reset_index()

# 重命名列名,符合你想要的格式
x_pivot.columns = ['ISBN', 'Middle Adult Count', 'Young Adult Count']

对于你给出的x数据,透视后会得到:

ISBNMiddle Adult CountYoung Adult Count
000649840X616

步骤2:将透视后的表与y合并

把处理好的计数列合并到y中,用ISBN作为匹配键:

# 用left join确保y中所有ISBN都保留,即使x中没有对应分类(此时计数为0)
y = y.merge(x_pivot, on='ISBN', how='left')

这样就能得到你想要的最终格式:每个ISBN一行,同时带有Middle Adult Count和Young Adult Count两列。

如果后续有更多年龄分类,这个方法也能自动适配,不需要修改代码逻辑,非常灵活。

内容的提问来源于stack exchange,提问作者Omar Amr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:30:46