如何在Python DataFrame中仅对含NaN的错位行跨列移动数据
精准修正DataFrame指定行的列值错位问题
核心操作逻辑
不需要开展全表批量清洗操作,所有修改动作仅针对存在错位、携带NaN值的索引为2的目标行,其余行的所有原有数值100%保留,不做任何变动。
原目标行的错位成因很明确:该行所有数值整体向左偏移了1列,导致列值对应关系完全错位:
- 原本归属
Type列的位置被Rating列应有的数值2占据,Type列实际为空值 - 原本归属
Rating列的位置被Reviews列应有的数值19占据 - 原本归属
Reviews列的位置被Category列应有的数值3占据 - 最右侧的
Category列因为数值偏移留空,形成了初始表里的NaN值
实现代码
用loc做行+列的精准定位赋值,从机制上避免误碰其他正常行的数据:
import numpy as np # 仅修改索引为2的行,按照正确列顺序传入对应值 df.loc[2, ["Type", "Rating", "Reviews", "Category"]] = [np.nan, 2, 19, 3]
关键注意点
- 不要使用全局遍历、批量整表移位的方式调整数据,这类操作很容易把其他正常行的合法数值改错
- 这种按行索引+列名的精准赋值方式,修改前后除了目标行之外,其余所有行的内容不会有任何差异
执行完代码后,得到的DataFrame结构就和目标要求完全一致,没有额外改动。
内容的提问来源于stack exchange,提问作者WF30
相关产品推荐
相关产品推荐

