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

Pandas如何从已有Query列拆分键值对生成新列并设置表头

解决Pandas拆分Query列并生成键值对列的问题

嘿,作为Pandas新手能想到拆分Query列已经很棒啦!我来帮你完成剩下的步骤,轻松实现你想要的DataFrame格式~

第一步:先构造/加载你的原始数据

首先我们先把你提供的样本数据转成Pandas DataFrame(如果已经加载好可以跳过这一步):

import pandas as pd

# 构造样本数据
data = {
    'Col1': [10000, 10001],
    'Col2': [101, 102],
    'Query': ['$name=XXX&#age=18&#mark=100', '$name=YYY&#age=17&#mark=95']
}
rundf = pd.DataFrame(data)

第二步:拆分Query列的键值对并生成新列

你已经完成了用&拆分Query列的操作,接下来我们要把每个拆分后的键=值字符串进一步拆分,转成字典后自动生成列名,再合并到原DataFrame中:

# 将拆分后的列表转为键值对字典,再转为DataFrame
query_details = rundf['Query'].str.split('&').apply(
    lambda x: dict(item.split('=') for item in x)
).apply(pd.Series)

# 横向合并原数据和新生成的键值对列
final_df = pd.concat([rundf, query_details], axis=1)

代码解释

  • rundf['Query'].str.split('&'):这就是你已经完成的步骤,把每个Query字符串拆分为['$name=XXX', '#age=18', '#mark=100']这样的列表
  • lambda x: dict(item.split('=') for item in x):对每个列表里的元素,按=拆分成键和值,转成{'$name': 'XXX', '#age': '18', '#mark': '100'}这样的字典
  • .apply(pd.Series):把字典自动转为DataFrame,字典的键会直接成为新的列名,对应的值填充到对应行
  • pd.concat([rundf, query_details], axis=1):横向合并原始DataFrame和新生成的键值对DataFrame,得到你想要的最终格式

最终效果

打印final_df会得到你期望的结果:

Col1  Col2                              Query $name #age #mark
0  10000   101  $name=XXX&#age=18&#mark=100   XXX    18   100
1  10001   102  $name=YYY&#age=17&#mark=95   YYY    17    95

另外补充一点:如果你的真实数据中,不同行的Query包含的键不统一(有的行有额外键,有的行缺少某些键),这种方法也能自动适配,缺失的键对应位置会填充NaN,非常灵活~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:48:38