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

迭代时如何从多个pandas Series对象创建目标格式DataFrame

实现结论

完全可以先将迭代得到的Series存入列表再统一转换为DataFrame,这也是该场景下效率最高的实现方式之一。

具体实现步骤

步骤1:迭代过程收集Series到列表

迭代过程中每生成一个Series就存入空列表,可通过给Series设置name属性自定义对应DataFrame的列名,不设置的话默认列名会以0、1、2的序号对应迭代轮次。

import pandas as pd

# 初始化存储Series的空列表
series_list = []

# 模拟你的迭代过程,这里用你给出的两个示例Series演示
# 第一轮迭代生成的Series
s1 = pd.Series(
    [118.55, 62.73, 263.36, 315.07],
    index=['DE_AT', 'DE_CZ', 'PL_DE', 'PL_SK']
)
s1.name = 1 # 对应列名设置为迭代轮次1
series_list.append(s1)

# 第二轮迭代生成的Series
s2 = pd.Series(
    [118.55, 62.73, 263.36, 315.07, 420],
    index=['DE_AT', 'DE_CZ', 'PL_DE', 'PL_NL', 'PL_UK']
)
s2.name = 2 # 对应列名设置为迭代轮次2
series_list.append(s2)

步骤2:拼接列表得到目标DataFrame

直接用pd.concat按列拼接列表即可,pandas会自动按索引对齐,缺失值默认填充为NaN,完全符合你的需求:

# axis=1表示按列拼接
result_df = pd.concat(series_list, axis=1)
# 可选:设置行索引名称为index,和你的预期格式完全对齐
result_df.index.name = 'index'

输出结果验证

最终生成的result_df内容如下,和你给出的预期效果完全一致:

1       2
index
DE_AT  118.55  118.55
DE_CZ   62.73   62.73
PL_DE  263.36  263.36
PL_SK  315.07     NaN
PL_NL     NaN  315.07
PL_UK     NaN  420.00

补充提示

如果迭代轮次较多,不需要手动设置name,直接在迭代时用计数器赋值即可:

series_list = []
for round_num in range(总迭代次数):
    # 你的业务逻辑生成当前轮Series s
    s.name = round_num + 1 # 列名从1开始计数
    series_list.append(s)
result_df = pd.concat(series_list, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:15:01