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

如何从Pandas DataFrame字符串列提取min/max数组求和并生成新列?

解析Pandas JSON字符串列并生成求和列

可以通过以下两种方法实现需求:

方法一:逐行解析JSON并计算求和

先导入必要模块,构造示例数据后,定义函数处理每行数据,解析JSON字符串并计算数组求和:

import pandas as pd
import json

# 构造示例DataFrame
data = {
    'ID': [1,2,3,4],
    'min_max_config': [
        '{"min":[0,1,0.1,0,0,0], "max":[0,1,0.4,0,0,0]}',
        '{"min":[0,1,0.1,0,0,0], "max":[0,1,0.5,0,0,0]}',
        '{"min":[0,1,0.6,0,0,0], "max":[0,1,0.7,0,0,0]}',
        '{"min":[0,1,0.8,0,0,0], "max":[0,1,0.2,0,0,0]}'
    ]
}
df = pd.DataFrame(data)

# 定义处理函数
def get_sums(row):
    config = json.loads(row['min_max_config'])
    row['min'] = sum(config['min'])
    row['max'] = sum(config['max'])
    return row

# 应用函数并调整列顺序
df = df.apply(get_sums, axis=1)
df = df[['ID', 'min', 'max', 'min_max_config']]

方法二:用json_normalize批量处理

先将JSON字符串转为字典列表,再通过json_normalize提取数组,最后计算求和:

import pandas as pd
import json

# 构造示例DataFrame(同上)
data = {
    'ID': [1,2,3,4],
    'min_max_config': [
        '{"min":[0,1,0.1,0,0,0], "max":[0,1,0.4,0,0,0]}',
        '{"min":[0,1,0.1,0,0,0], "max":[0,1,0.5,0,0,0]}',
        '{"min":[0,1,0.6,0,0,0], "max":[0,1,0.7,0,0,0]}',
        '{"min":[0,1,0.8,0,0,0], "max":[0,1,0.2,0,0,0]}'
    ]
}
df = pd.DataFrame(data)

# 转换为字典列表并归一化
config_dicts = df['min_max_config'].apply(json.loads).tolist()
config_df = pd.json_normalize(config_dicts)

# 计算求和并添加到原DataFrame
df['min'] = config_df['min'].apply(sum)
df['max'] = config_df['max'].apply(sum)

# 调整列顺序
df = df[['ID', 'min', 'max', 'min_max_config']]

两种方法都能得到你需要的结果,若min_max_config列存在无效JSON,可在函数中加入try-except块处理异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:00:57