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

pandas中是否有Series版set_index?concat构建DataFrame优化问询

解决方案

方法一:直接从字典列表构造DataFrame(推荐)

这是最规范高效的方式,无需绕弯使用Series和concat,直接收集处理好的字典,一次性生成DataFrame并设置索引:

import pandas as pd

_collection = []
for some_data in data_source:
    _entry = parse_data(some_data)
    # 在这里完成_entry的数值调整,比如:
    # _entry["Bonus"] = _entry["Base Salary"] * 0.15
    _collection.append(_entry)

# 直接构造DataFrame并设置Work ID为索引
df = pd.DataFrame(_collection).set_index("Work ID")

方法二:保留Series+concat的逻辑(如果必须用Series)

如果一定要用Series拼接的方式,可以避免pop()修改原始字典,直接用Series的"Work ID"值作为索引标签:

import pandas as pd

_collection = []
for some_data in data_source:
    _entry = parse_data(some_data)
    # 调整_entry的数值
    s = pd.Series(_entry)
    # 将Series转为以Work ID为索引的单行DataFrame后加入列表
    _collection.append(pd.DataFrame(s).T.set_index("Work ID"))

df = pd.concat(_collection)

为什么这两种方法更规范?

  1. 方法一规避了pop()这种临时修改原始数据的操作,逻辑更清晰;同时直接构造DataFrame的性能比多次拼接Series更高,数据量大时优势更明显。
  2. 避免了你之前尝试的T.set_index().T这种冗余转置操作,一步到位完成索引设置。
  3. 完整保留了对_entry进行数值调整的步骤,符合你暂不考虑列表推导式的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:16