如何将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结构示例:
| averageNumberOfOperationsPerPath | id | methods | value |
|---|---|---|---|
| 1.285714 | 84 | ['get', 'post', 'put', 'delete'] | [12.0, 4.0, 1.0, 1.0] |
| 1.266667 | 84 | ['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
相关产品推荐
相关产品推荐

