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

如何用Pandas将两个字符串列表转换为JSON数组?Python新手求助

可行,实现方法如下

步骤说明

  1. 解析字符串形式的列表:DataFrame中存储的是字符串格式的列表,需先转换为Python实际的列表对象,推荐用ast.literal_eval(比eval更安全,避免代码注入风险)。
  2. 配对key与val元素:遍历每一行数据,将对应行的keys列表和vals列表元素一一配对,生成{'key': k, 'val': v}格式的字典。
  3. 转换为JSON数组:将生成的字典列表转为JSON格式字符串。

代码示例

import pandas as pd
import ast
import json

# 模拟你的DataFrame结构(替换成你实际的DataFrame)
df = pd.DataFrame({
    'keys': ["['os', 'language']", "['tool', 'version']"],
    'vals': ["['linux', 'python']", "['pandas', '1.5.3']"]
})

# 1. 解析字符串列表为实际列表
df['keys'] = df['keys'].apply(ast.literal_eval)
df['vals'] = df['vals'].apply(ast.literal_eval)

# 2. 生成目标字典列表
result = []
for _, row in df.iterrows():
    # 配对当前行的key和val元素
    for k, v in zip(row['keys'], row['vals']):
        result.append({'key': k, 'val': v})

# 3. 转为JSON数组
json_output = json.dumps(result, indent=2)
print(json_output)

输出结果

[
  {
    "key": "os",
    "val": "linux"
  },
  {
    "key": "language",
    "val": "python"
  },
  {
    "key": "tool",
    "val": "pandas"
  },
  {
    "key": "version",
    "val": "1.5.3"
  }
]

补充说明

  • 如果某行的keys和vals列表长度不一致,zip会以较短的列表长度为准截断配对。若需要保留所有元素,可以用itertools.zip_longest,并处理可能出现的None值:
    from itertools import zip_longest
    
    result = []
    for _, row in df.iterrows():
        for k, v in zip_longest(row['keys'], row['vals'], fillvalue=None):
            result.append({'key': k, 'val': v})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:10:07