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

如何将循环输出的列表逐行添加到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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:35:20