如何借助油井名称列表自动命名DataFrame?
问题
我有多口油井,每口油井分属某个分支,多个分支共同构成一个油田。我通过循环对每口油井执行相同操作:
items=['1','5','8','22','2'] for item in items: well=item
该循环会从数据库加载数据、清洗数据,计算每口油井的产量、压力等参数,同时生成图表,并将输出结果写入Excel文件,文件中包含名称为1、5、8、22、2的工作表。但后续我需要汇总各分支的产量、压力等数据,再将分支数据汇总为油田数据。
目前我只能手动编写代码读取数据并汇总:
well1=pd.read_excel('results.xlsx ', sheet_name='1') well5=pd.read_excel('results.xlsx ', sheet_name='5') branch['rate']=well1['rate']+well5['rate']
请问是否可以借助上述油井名称列表为生成的DataFrame命名,以替代手动命名的方式?
解决方案
当然可以,别再单独给每个油井创建独立的DataFrame变量,用字典存储所有油井的DataFrame是更高效的方案,完全能借助油井名称列表实现自动化:
1. 批量读取所有油井数据到字典
import pandas as pd items = ['1','5','8','22','2'] well_data = {} # 字典的key是油井编号,value是对应油井的DataFrame for well_id in items: well_data[well_id] = pd.read_excel('results.xlsx', sheet_name=well_id)
之后你可以通过well_data['1']、well_data['5']直接访问对应油井的DataFrame,不用手动逐个命名变量。
2. 按分支批量汇总数据
先定义好分支和油井的对应关系(比如branch_wells = {'分支A': ['1','5'], '分支B': ['8','22'], '分支C': ['2']}),再批量计算:
branch_summary = {} for branch_name, wells in branch_wells.items(): # 汇总该分支所有油井的产量 branch_rate = pd.concat([well_data[well]['rate'] for well in wells], axis=1).sum(axis=1) # 同理汇总压力参数 branch_pressure = pd.concat([well_data[well]['pressure'] for well in wells], axis=1).sum(axis=1) # 组合成分支汇总的DataFrame branch_summary[branch_name] = pd.DataFrame({ 'rate': branch_rate, 'pressure': branch_pressure })
3. 汇总为油田总数据
把所有分支的汇总结果再求和即可:
field_summary = pd.concat(branch_summary.values(), axis=1).sum(axis=1)
这种方式彻底摆脱了手动命名的繁琐,扩展性也极强——后续新增油井或分支,只要更新对应的列表/字典就行,不用修改大量重复代码。
内容的提问来源于stack exchange,提问作者Lala
相关产品推荐
相关产品推荐

