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

如何在Pandas DataFrame中拆分分号分隔的键值对列

解决Pandas拆分分号分隔键值对列的错位问题

你的问题出在直接按分号拆分后转成DataFrame是按位置分配列,完全忽略了键的对应关系,自然会出现错位和无对应列名的情况。正确的做法是先把每行的INFO字符串解析成字典(键值对应),再转换成结构化的DataFrame。

具体实现步骤

  1. 编写解析函数:处理每行INFO内容,将分号分隔的元素转为键值对,无=的项(比如IMPRECISE)可以设为True或空值,按需调整。
  2. 将INFO列批量解析为字典列表,再转为DataFrame。
  3. 和原DataFrame拼接,得到最终结果。

完整代码示例

import pandas as pd

# 读取原始数据
df_checknew = pd.read_excel("annotated.xlsx")

# 解析INFO字符串为字典的函数
def parse_info(info_str):
    # 拆分并去除空元素和首尾空格
    items = [item.strip() for item in info_str.split(';') if item.strip()]
    info_dict = {}
    for item in items:
        if '=' in item:
            # 只拆分一次,避免值中包含=的情况
            key, value = item.split('=', 1)
            info_dict[key.strip()] = value.strip()
        else:
            # 处理无值的标记,比如IMPRECISE,这里设为True,也可以设为''或NaN
            info_dict[item.strip()] = True
    return info_dict

# 解析INFO列为字典,再转为结构化DataFrame
df_info = df_checknew['INFO'].apply(parse_info).apply(pd.Series)

# 和原DataFrame拼接(去掉原INFO列避免重复)
df_final = pd.concat([df_checknew.drop('INFO', axis=1), df_info], axis=1)

# 可选:将空值填充为空字符串
df_final = df_final.fillna('')

效果说明

运行后每个键会自动成为独立列,对应行的正确值会填充到列中,没有该键的行则显示空值(或你设置的默认值),彻底解决错位和列名缺失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:11:07