如何将DataFrame的索引与第二列元素追加至含第一列元素的嵌套列表
解决DataFrame索引与列值向嵌套列表追加的问题
需求说明
现有一个包含两列的DataFrame,以及一个已包含DataFrame第一列(Column A)元素的嵌套列表,需要将DataFrame的索引和第二列(Column B)的对应值追加到嵌套列表的每个元素中,最终形成[索引值, ColumnA元素, ColumnB元素]的子结构,并保留原嵌套列表的层级。
示例数据
DataFrame结构:
| Column A | Column B | 索引 |
|---|---|---|
| 100.2 | A | 0 |
| 101.5 | B | 1 |
| 103.6 | C | 3 |
| 104.6 | D | 4 |
| 105.7 | E | 5 |
现有嵌套列表:
[[100.2,101.5],[103.6,104.6],[105.7]]
期望输出:
[[[0,100.2,'A'],[1,101.5,'B']],[[3,103.6,'C'],[4,104.6,'D']],[[5,105.7,'E']]]
实现代码
import pandas as pd # 构造目标DataFrame(索引可根据实际情况调整) df = pd.DataFrame( data={ 'Column A': [100.2, 101.5, 103.6, 104.6, 105.7], 'Column B': ['A', 'B', 'C', 'D', 'E'] }, index=[0, 1, 3, 4, 5] ) # 现有嵌套列表 existing_list = [[100.2, 101.5], [103.6, 104.6], [105.7]] # 构建Column A元素到(索引, Column B值)的映射字典 value_mapping = {row['Column A']: (idx, row['Column B']) for idx, row in df.iterrows()} # 生成结果列表 result = [] for sub_list in existing_list: new_sub = [] for num in sub_list: idx, b_val = value_mapping[num] new_sub.append([idx, num, b_val]) result.append(new_sub) # 输出结果 print(result)
代码说明
- 映射字典构建:通过字典推导式快速建立Column A元素与对应索引、Column B值的关联,确保后续查找高效。
- 层级遍历重组:遍历原有嵌套列表的每一层,对每个数值从映射字典中取出对应数据,重组为目标子结构,最终拼接成符合要求的嵌套列表。
- 灵活性调整:如果你的DataFrame使用默认连续索引,只需移除
index参数即可,代码会自动匹配对应索引值;若Column A存在重复值,可根据实际需求修改映射逻辑(如改用列表存储多组对应关系)。
内容的提问来源于stack exchange,提问作者ASking
相关产品推荐
相关产品推荐

