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

优化Pandas计算Vshale代码:无需新增GRmin/GRmax列的高效方案

高效计算Vshale的优化方案

嘿,我来帮你简化这段计算Vshale的代码!你原来的方法需要先聚合再合并,其实用Pandas的transform方法就能一步到位,完全不用新增GRmin、GRmax列,代码更简洁还更高效。

优化后的代码

import pandas as pd

# 初始化原始数据
df = pd.DataFrame(
    [['A', 80], ['A', 64], ['A', 55], ['B', 56], ['B', 89], ['B', 73], 
     ['C', 78], ['C', 100], ['C', 150], ['C', 76], ['C', 87]],
    columns=['Well', 'GR']
)

# 直接计算Vshale,无需中间合并步骤
grouped_gr = df.groupby('Well')['GR']
df['Vshale'] = (df['GR'] - grouped_gr.transform('min')) / (grouped_gr.transform('max') - grouped_gr.transform('min'))

# 输出结果
print(df)

为什么这样更高效?

  • transform方法会对每个Well分组计算GR的最小/最大值,然后自动把结果广播回原DataFrame的对应行,省去了单独生成聚合表再合并的步骤。
  • 我们先把groupby('Well')['GR']存成变量grouped_gr,避免重复执行分组操作,在数据量较大时能明显提升性能。

结果验证

运行后得到的Vshale列和你期望的完全一致:

  • 比如Well A的GRmin=55、GRmax=80,80对应的Vshale为(80-55)/(80-55)=1,64对应(64-55)/25=0.36,完全符合预期。
  • Well C的GRmin=76、GRmax=150,78对应的Vshale为(78-76)/(150-76)=2/74≈0.027027027,和你给出的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:27:22