




本文详解如何识别特定模式的单元格(如列 p 中以 "dis" 开头的值),将其置空,并将原值整体右移一列,同时自动扩展新列(如 s)填充移入内容,最终实现“剪切-右移-对齐”效果。
在 Pandas 中,没有直接等价于 Excel “剪切单元格并右移” 的原生操作,但可通过逻辑拆解+向量操作高效模拟该行为:核心思路是——定位需移动的行 → 将其整行向右平移一列 → 与未移动行拼接 → 统一补齐缺失值。
以下为完整实现步骤与代码:
import pandas as pd
import numpy as np
# 构造示例数据
data = {
'P': ['Performan', 'Dispo', 'Perfumo', 'Disper', 'Dispite'],
'Q': ['Dispite', 'camera', 'Displu', 'camera', 'camera'],
'R': ['Cammmr', 'battery', 'Cammmmt', 'battery', 'battery']
}
df = pd.DataFrame(data)
# 实现“剪切P中Dis开头值并右移”
df['S'] = 'blank' # 新增列
cond = df['P'].str.startswith('Dis')
out = (
pd.concat([df[~cond], df[cond].shift(axis=1)])
.fillna('blank')
.sort_index()
.reindex(columns=['P', 'Q', 'R', 'S']) # 显式指定列序,确保S在末尾
)
print(out)P Q R S 0 Performan Dispite Cammmr blank 1 blank Dispo camera battery 2 Perfumo Displu Cammmmt blank 3 blank Dispercamera battery 4 blank Dispite camera battery
通过这一组合操作,你就能在 Pandas 中优雅复现 Excel 的“删除单元格并右移”逻辑,兼顾性能与可读性。