gpt4 book ai didi

python-3.x - 如果关联 ID 的一部分匹配,则来自多行的平均值

转载 作者:行者123 更新时间:2023-12-04 10:05:13 26 4
gpt4 key购买 nike

我有一个地下水模型输出文件,其中包含大约 200 口井的模拟水位。棘手的部分是,根据井跨越的模型层数(不同深度),井最多可以有 5 个值。需要对这些值进行平均,以便将它们与另一个数据框中的单个观测水位进行比较。每口井都有一个 11 个字符的 ID(即 HARN0000219)。如果一口井有 4 层,模型 ID 会在第一层之后针对每个附加层进行调整(我无法控制模型输出文件的创建方式)。例如,具有 4 层的井将有 4 个值,关联的 ID 将是:HARN0000219、HARN0000219.1、HARN0000219.2、HARN0000219.3。

我将如何通过基础井 ID 计算平均水位?

示例数据框:

df = pd.DataFrame({
'wl': [4568.35, 4538.85, 4156.48, 4156.54, 4156.59, 4156.61],
'ID': ['GRAN0000800', 'HARN0000009', 'HARN0000219', 'HARN0000219.1', 'HARN0000219.2', 'HARN0000219.3']
})

我假设它会从这样的事情开始,但不知道从哪里开始。
for well, row in well_mod.iterrows():
if # first 11 characters = next:
# average all wl values

任何帮助将不胜感激!

最佳答案

您需要创建一个包含 "ID" 相关前缀的新系列,并按该系列分组。例如,

# take first 11 characters of ID
key = df['ID'].str[:11]

# average water level for each base ID
df.groupby(key)['wl'].mean()

ID
GRAN0000800 4568.350
HARN0000009 4538.850
HARN0000219 4156.555
Name: wl, dtype: float64

根据您的 ID 的结构,以下内容可能更合适。
# take everything from ID before the period
key = df['ID'].str.split('.').str[0]

关于python-3.x - 如果关联 ID 的一部分匹配,则来自多行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61619817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com