如何将循环输出的列表逐行添加到3列DataFrame中?
解决方案
你的代码问题出在创建临时DataFrame的方式上:pd.DataFrame(lst)会把列表里的每个元素拆成单独行,而非将整个列表作为一行数据。下面提供两种可行的解决办法:
方法一:批量收集列表后一次性生成DataFrame(推荐)
这种方式效率更高,尤其适合处理大量Excel文件的场景:
import pandas as pd # 初始化空列表用于存储所有处理后的列名列表 all_col_lists = [] # 替换为你的实际遍历逻辑:遍历Excel文件、选列、处理列名 for excel_path in your_excel_file_paths: # 这里是你的业务逻辑示例:读取文件、选取3列、处理列名 df = pd.read_excel(excel_path) selected_cols = df.columns[:3] # 假设选前3列,替换为你的选列逻辑 # 替换为你的字符串处理逻辑,示例仅为演示 processed_cols = [col + 'a' if col == 'Col1' else col for col in selected_cols] all_col_lists.append(processed_cols) # 一次性生成目标DataFrame,自动生成索引,无表头 final_df = pd.DataFrame(all_col_lists) print(final_df)
方法二:修正循环内的DataFrame构建逻辑
如果需要在循环中逐步构建,需修改临时DataFrame的创建方式,同时推荐使用pd.concat替代已过时的append方法:
import pandas as pd final_df = pd.DataFrame() temp_dfs = [] # 假设list1、list2、list3是你处理好的列名列表 for col_list in [list1, list2, list3]: # 将单个列名列表包裹进另一个列表,确保作为一行数据 temp_df = pd.DataFrame([col_list]) temp_dfs.append(temp_df) # 合并所有临时DataFrame,重置索引 final_df = pd.concat(temp_dfs, ignore_index=True) print(final_df)
最终输出效果
两种方法都会生成你需要的结构:
0 1 2 0 Col1 Col1a Col1b 1 Col2 Col2a Col2b 2 Col3 Col3a Col3b
内容的提问来源于stack exchange,提问作者FredG
相关产品推荐
相关产品推荐

