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

如何用Pandas或Excel按标识重新排列Excel单元格内容

实现Excel表格按前缀重排列内容的方法

原数据表格

ABC
KLM: 123QRS: 345NOP: 356
NOP: 454KLM: 123QRS: 564
NOP: 65KLM: 423QRS: 642
QRS: 54KLM: 523NOP: 325
QRS: 234KLM: 123NOP: 56
KLM: 234NOP: 5425QRS: 3425

目标效果

将每行中以KLM开头的内容归到A列,QRS开头归到B列,NOP开头归到C列,最终得到:

ABC
KLM: 123QRS: 345NOP: 356
KLM: 123QRS: 564NOP: 454
KLM: 423QRS: 642NOP: 65
KLM: 523QRS: 54NOP: 325
KLM: 123QRS: 234NOP: 56
KLM: 234QRS: 3425NOP: 5425

方法一:使用Pandas实现

步骤1:读取数据

import pandas as pd

# 读取目标Excel文件,替换为你的文件路径和工作表名
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")

步骤2:定义重排逻辑并应用

def rearrange_row(row):
    # 从当前行提取对应前缀的内容
    klm_val = next(val for val in row if val.startswith("KLM"))
    qrs_val = next(val for val in row if val.startswith("QRS"))
    nop_val = next(val for val in row if val.startswith("NOP"))
    return pd.Series([klm_val, qrs_val, nop_val], index=["A", "B", "C"])

# 对每行应用重排函数
new_df = df.apply(rearrange_row, axis=1)

步骤3:保存结果

# 将重排后的数据保存到新Excel文件
new_df.to_excel("rearranged_data.xlsx", index=False)

注:如果存在某行缺失某类前缀内容的情况,可以修改next()方法添加默认值,比如next((val for val in row if val.startswith("KLM")), "")返回空字符串。


方法二:使用Excel公式实现

步骤1:输入公式

在原数据旁新建空白表格(建议先备份原数据),在新表格的对应单元格输入以下公式:

  • A2单元格(提取KLM内容):
    =INDEX($A2:$C2,MATCH("KLM*",$A2:$C2,0))
    
  • B2单元格(提取QRS内容):
    =INDEX($A2:$C2,MATCH("QRS*",$A2:$C2,0))
    
  • C2单元格(提取NOP内容):
    =INDEX($A2:$C2,MATCH("NOP*",$A2:$C2,0))
    

步骤2:批量填充

选中A2:C2单元格,下拉填充到所有行,即可自动完成所有行的重排。

注:如果你的Excel支持动态数组函数,也可以用FILTER函数简化,比如A2单元格输入=FILTER($A2:$C2,LEFT($A2:$C2,3)="KLM"),同理修改前缀应用到B、C列。

内容的提问来源于stack exchange,提问作者Subhaan Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:43:27