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

如何将DataFrame中每个唯一ID对应内容转换为独立列表变量?

解决方案:为每个ID生成独立的列名-值列表变量

没问题,我来帮你实现这个需求——把DataFrame里每个ID对应的M开头列转成指定格式的列表,还能自动生成对应独立变量。

首先,我们先还原你的示例DataFrame:

import pandas as pd

# 构造你的示例数据
df = pd.DataFrame({
    "ID": ["E001", "E002", "E003"],
    "M001": [3, 4, 4],
    "M002": [4, 5, 3],
    "M003": [3, 5, 5],
    "M004": [2, 3, 4]
})

接下来,我们可以通过遍历DataFrame的每一行,动态生成目标变量:

# 遍历每一行数据
for _, row in df.iterrows():
    # 获取当前行的ID
    id_label = row["ID"]
    # 筛选出所有以"M"开头的列,生成[列名, 对应值]的嵌套列表
    result_list = [[col, row[col]] for col in df.columns if col.startswith("M")]
    # 动态创建以 {ID}_response 命名的变量
    globals()[f"{id_label}_response"] = result_list

执行完这段代码后,你就能得到三个独立的变量:E001_response、E002_response、E003_response,完全符合你要的格式。我们可以验证一下:

print(E001_response)
# 输出:[['M001', 3], ['M002', 4], ['M003', 3], ['M004', 2]]

print(E002_response)
# 输出:[['M001', 4], ['M002', 5], ['M003', 5], ['M004', 3]]

补充说明

如果你的ID数量很多,动态创建大量全局变量可能会导致代码维护困难,这时更推荐用字典来统一存储所有结果:

responses_dict = {}
for _, row in df.iterrows():
    id_label = row["ID"]
    responses_dict[id_label] = [[col, row[col]] for col in df.columns if col.startswith("M")]

# 调用方式:responses_dict["E001"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:02:13