Python错位数据多列右移、插入值及填充NaN的数据清洗咨询
解决Python中数据集行错位与插入指定值的问题
问题场景
在Python Notebook处理数据集时,遇到部分行数据错位:这些行的数据需要从Unit列开始向右平移一格;同时需要在Unit列的合适位置插入"mg",移位产生的空缺填充为NaN。
原始表格:
预期表格:
解决方案(基于Pandas)
核心思路是先定位错位行,再对指定列范围右移,最后填充指定值和NaN,以下是具体实现:
代码实现
import pandas as pd import numpy as np # 读取原始数据(根据实际数据源调整读取方式) df = pd.read_excel("your_dataset.xlsx") # 1. 定位需要移位的行:根据数据特征判断,示例为Unit列出现Shape列的特征值 mask = df['Unit'].isin(['圆形', '方形', '三角形']) # 2. 对目标行从Unit列开始向右平移一格 df.loc[mask, 'Unit':] = df.loc[mask, 'Unit':].shift(axis=1) # 3. 在移位后的Unit列填入"mg" df.loc[mask, 'Unit'] = 'mg' # 4. 将空值统一替换为标准NaN df = df.replace('', np.nan) # 查看处理结果 print(df)
关键步骤说明
- 定位错位行:通过
mask筛选出Unit列存在异常值(本该属于Shape列的内容)的行,可根据实际数据特征调整判断条件,比如用df['Unit'].str.contains('形状关键词')匹配。 - 列方向移位:
shift(axis=1)实现行内列的右移操作,指定'Unit':作为操作范围,确保仅从Unit列开始向后移位。 - 填充指定值:给移位后的Unit列赋值"mg",补全缺失的单位信息。
- 统一空值格式:用
replace('', np.nan)将移位产生的空字符串转为标准NaN,便于后续数据处理。
内容的提问来源于stack exchange,提问作者Creative
相关产品推荐
相关产品推荐

