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

如何将Pandas存储键值对字符串的Series转换为结构化DataFrame

实现Pandas Series转结构化DataFrame的方法

核心思路

不需要对分隔符做拆分,直接通过正则匹配所有合法键值对,从根源避免值内包含分隔符导致的拆分错误。

完整实现代码

import pandas as pd

# 构造示例输入Series
s = pd.Series([
    "key1=value1 key2=value2 key3=value3", 
    "key1=value 11 key2=value22 key3=value33", 
    "key1=value111,key2=value222,key3=value333"
])

# 核心转换逻辑
# 正则匹配所有键值对,分别捕获键和值
df = s.str.extractall(r'(\w+)=([^=]+?)(?=\s*\w+=|$)')\
      .set_index(0, append=True)[1]\
      .unstack()\
      .reset_index(level='match', drop=True)

# 清理值末尾多余的逗号、空格
df = df.apply(lambda col: col.str.rstrip(', '))

输出结果验证

打印df即可得到符合要求的结构,原始索引会完全保留:

key1      key2      key3
0    value1    value2    value3
1  value 11   value22   value33
2  value111  value222  value333

正则逻辑说明

  • (\w+):匹配键名,支持字母、数字、下划线组合
  • =:匹配键和值的分隔等号
  • ([^=]+?):非贪婪匹配值内容,允许值包含空格、逗号等除了等号之外的任意字符
  • (?=\s*\w+=|$):正向预查,确保值的结束位置是下一个键的起始位置或者字符串结尾,不会把后续键名误拆到当前值中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:57:08