Pandas中基于前一行数据补全厂商字段的技术求助
解决Pandas中车型数据的厂商信息补全问题
你的思路方向是对的,但之前的代码只处理了每个厂商下的第一行车型,没法覆盖后续的车型行。核心问题是需要把识别出的厂商值持续向下填充,直到遇到下一个新的厂商为止。
解决方案代码
替换你原来的df['manufacturor'] = ...那行代码,改用下面的逻辑:
# 第一步:识别厂商行(firstYear和style都是NaN的行),提取对应的厂商名称,其他行设为NaN df['manufacturor'] = np.where((df['firstYear'].isna()) & (df['style'].isna()), df['Make/Model'], np.nan) # 第二步:向前填充(ffill),把厂商值填充到下面所有的车型行 df['manufacturor'] = df['manufacturor'].ffill()
逻辑解释
- 识别厂商行:通过
(df['firstYear'].isna()) & (df['style'].isna())判断哪些行是厂商行(因为厂商行的firstYear和style都是空值),把这些行的Make/Model值放到manufacturor列,其他行暂时设为NaN。 - 向前填充:
ffill()方法会把每一个非NaN的厂商值,持续填充到它下面所有的NaN行,直到遇到下一个新的厂商值为止。这样就能给每个厂商下的所有车型都补上对应的厂商信息了。
验证结果
运行完上面的代码后,你的DataFrame的manufacturor列会呈现如下效果:
| Make/Model | manufacturor |
|---|---|
| FORD | FORD |
| BRONCO | FORD |
| MAVERICK | FORD |
| MUSTANG | FORD |
| HONDA | HONDA |
| CIVIC | HONDA |
| CR-V | HONDA |
| ... | ... |
这样就完美解决了所有车型行的厂商信息补全问题啦!
内容的提问来源于stack exchange,提问作者KBD
相关产品推荐
相关产品推荐

