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

如何将DataFrame多方法列合并为methods与value列并保留原行数

实现方法

假设你使用的是Pandas库,以下是具体实现步骤:

1. 构造(或加载)目标DataFrame

先还原你提供的数据集结构:

import pandas as pd

df = pd.DataFrame({
    'averageNumberOfOperationsPerPath': [1.285714, 1.266667, 1.266667, 3.333333, 3.333333],
    'id': [84, 84, 84, 124, 124],
    'get': [12.0, 13.0, 13.0, 3.0, 3.0],
    'post': [4.0, 4.0, 4.0, 1.0, 1.0],
    'put': [1.0, 1.0, 1.0, 2.0, 2.0],
    'delete': [1.0, 1.0, 1.0, 1.0, 1.0]
})

2. 区分固定列与方法列

先明确需要保留的固定列,以及需要合并的方法列(自动识别所有非固定列,适配你说的“其他未列出的方法列”):

# 定义需要保留的非方法列
non_method_cols = ['averageNumberOfOperationsPerPath', 'id']
# 自动提取所有方法列
method_cols = [col for col in df.columns if col not in non_method_cols]

3. 合并方法列到目标列(保持原行数)

方式一:拆分为方法名列表和对应值列表

生成methods(存储方法名)和value(存储对应数值)两个新列:

# 生成methods列:每行是当前行的所有方法名列表
df['methods'] = df[method_cols].apply(list, axis=1)
# 生成value列:每行是当前行的所有方法数值列表
df['value'] = df[method_cols].values.tolist()

# 可选:删除原来的单个方法列
df = df.drop(columns=method_cols)

处理后的DataFrame结构示例:

averageNumberOfOperationsPerPathidmethodsvalue
1.28571484['get', 'post', 'put', 'delete'][12.0, 4.0, 1.0, 1.0]
1.26666784['get', 'post', 'put', 'delete'][13.0, 4.0, 1.0, 1.0]

方式二:合并为字典格式(单列存储键值对)

如果希望把方法名和对应值以字典形式存在单个列中:

# 生成method_dict列:每行是{方法名: 数值}的字典
df['method_dict'] = df[method_cols].apply(lambda row: row.to_dict(), axis=1)

# 可选:删除原来的单个方法列
df = df.drop(columns=method_cols)

处理后method_dict列的示例值:{'get': 12.0, 'post': 4.0, 'put': 1.0, 'delete': 1.0}


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:20:54