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)
为什么这两种方法更规范?
- 方法一规避了
pop()这种临时修改原始数据的操作,逻辑更清晰;同时直接构造DataFrame的性能比多次拼接Series更高,数据量大时优势更明显。 - 避免了你之前尝试的
T.set_index().T这种冗余转置操作,一步到位完成索引设置。 - 完整保留了对
_entry进行数值调整的步骤,符合你暂不考虑列表推导式的需求。
内容的提问来源于stack exchange,提问作者djohoe28
相关产品推荐
相关产品推荐

