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

Pandas如何根据DataFrame行内等号前字符串重命名列并移除前缀

Pandas 批量处理键=值格式单元格的实现方案

核心思路

所有列统一按规则逐列处理即可,不需要复杂操作:

  • 取每列首个非空单元格,按第一个等号拆分,等号前的字符串作为该列新列名
  • 对该列所有单元格,删除开头的键名=前缀,剩余部分作为实际单元格值;对没有等号的异常单元格直接保留原值,避免报错
  • 拆分时指定只拆分第一个等号,避免值本身包含等号(比如字典格式内容)时把有效内容切坏

可直接运行的代码

import pandas as pd

# --- 以下为测试数据构造,实际使用时替换成你自己的DataFrame读取代码即可 ---
df = pd.DataFrame({
    '1': ['id=10', 'id=11', 'id=12'],
    '12': ['formatted_value=U$ 20.000', 'formatted_value=U$ 10.000', 'formatted_value=U$ 18.000'],
    '13': ['weighted_value=U$ 20000', 'weighted_value=U$ 10000', 'weighted_value=U$ 10000'],
    '14': ['person_name=Natys Person', 'person_name=Mike Tyson', 'person_name=Mike Talbud'],
    '15': ["query={'id':0,'name':'Robert'}", "query={'id':2,'name':'Roberta'}", 'sometext']
})
# --- 测试数据构造结束 ---

# 核心处理逻辑
for col in df.columns:
    first_val = df[col].iloc[0]
    # 仅对符合"键=值"格式的列做处理
    if '=' in str(first_val):
        new_col = first_val.split('=', 1)[0]
        df.rename(columns={col: new_col}, inplace=True)
        # 批量处理列内所有值
        df[new_col] = df[new_col].apply(lambda x: x.split('=',1)[1] if '=' in str(x) else x)

处理后输出效果

id formatted_value weighted_value   person_name                     query
0  10      U$ 20.000       U$ 20000  Natys Person  {'id':0,'name':'Robert'}
1  11      U$ 10.000       U$ 10000     Mike Tyson  {'id':2,'name':'Roberta'}
2  12      U$ 18.000       U$ 10000    Mike Talbud                  sometext

注:你给出的预期示例中第二行query值笔误写成了{'id':0,'name':'Robert'},实际按规则处理后会保留原始单元格的正确值{'id':2,'name':'Roberta'}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:03:19