Python如何复制嵌套列表中指定位置的带表头子列表
实现方法
首先明确两个基础注意点:
- Python列表索引从0开始计数,你要操作的第二个子列表对应索引位置为
1 - 不要用
list作为变量名,这是Python内置列表类型的保留关键字,重名覆盖会导致后续调用内置列表方法时报错,建议把存储多个Excel读入结果的变量改名为df_list这类语义明确的名称。
最优实现代码
直接用列表原生insert方法插入独立副本即可,全程不需要重构整个列表,开销最低、逻辑最清晰:
import pandas as pd # 替换原来用list做变量名的读取逻辑 df_list = [pd.read_excel(file, header=['a','b']) for file in files] # 1. 生成第二个子列表的独立副本,避免后续修改副本时联动改动原始数据 second_df_copy = df_list[1].copy() # 2. 将副本插入到原第二个子列表的正后方,也就是索引为2的位置 df_list.insert(2, second_df_copy)
关键说明
- 必须调用pandas的
.copy()方法生成副本:如果直接写df_list.insert(2, df_list[1]),插入的元素和原第二个子列表是同一个对象引用,后续你对其中任意一个DataFrame做增删改、填充空值等操作,另一个会同步变化,不符合独立副本的使用需求。 - 列表的
insert(index, obj)方法是原地修改列表,不需要额外生成新列表再赋值,内存和时间开销都是这个场景下的最优解,执行完上述代码后,df_list的结构就会变成你需要的[ [first_df], [second_df], [second_df_copy], [third_df], ... ]格式。
内容的提问来源于stack exchange,提问作者Saguaro
相关产品推荐
相关产品推荐

