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

如何从DataFrame列表提取指定列并合并为带自定义列名的新DataFrame

问题描述

假设我有3个被包裹在列表中的DataFrame,分别为:

df_1 = pd.DataFrame({'text':['a','b','c','d','e'],'num':[2,1,3,4,3]})
df_2 = pd.DataFrame({'text':['f','g','h','i','j'],'num':[1,2,3,4,3]})
df_3 = pd.DataFrame({'text':['k','l','m','n','o'],'num':[6,5,3,1,2]})

对应的DataFrame列表为:

df_list = [df_1, df_2, df_3]

我希望遍历该列表,提取每个DataFrame的text列,合并为一个新DataFrame,将列名设置为topic_1、topic_2等自定义名称,期望结果如下:

topic_1 topic_2 topic_3
0       a       f       k
1       b       g       l
2       c       h       m
3       d       i       n
4       e       j       o

我已通过以下代码提取text列:

lst = []
for i in range(len(df_list)):
    lst.append(df_list[i]['text'].tolist())

但卡在了合并步骤,希望用非暴力手段将这些列合并为单个DataFrame。

解决方案

方法1:直接用pd.concat处理原列表(推荐)

无需先将列转成列表,直接提取每个DataFrame的text列并重命名,再按列合并:

import pandas as pd

# 遍历列表,提取text列并批量重命名
dfs_to_concat = [df['text'].rename(f'topic_{idx+1}') for idx, df in enumerate(df_list)]

# 按列合并生成结果
result_df = pd.concat(dfs_to_concat, axis=1)
print(result_df)

方法2:基于已提取的lst列表生成DataFrame

如果已经得到lst,可以直接构造DataFrame并指定列名:

# 生成自定义列名
column_names = [f'topic_{idx+1}' for idx in range(len(lst))]
# 转置后构造DataFrame(因为lst存储的是原列的行数据)
result_df = pd.DataFrame(lst).T
result_df.columns = column_names
print(result_df)

方法3:循环中逐步构建DataFrame

也可以在循环过程中直接向空DataFrame添加列,避免额外列表存储:

result_df = pd.DataFrame()
for idx, df in enumerate(df_list):
    result_df[f'topic_{idx+1}'] = df['text']
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:36:32