【发布时间】:2020-05-06 03:59:47
【问题描述】:
我有一个包含以下列的 CSV 文件:UniqueWellIdentifier(UWI);深度;孔隙率(PHI);中性计数(NEUT)。
对于每个 UWI,我需要知道 NEUT 最大值和最小值是多少,以确定每个 UWI 组的斜率和截距。每个 UWI 都会有一个稍微不同的变换用于 NEUT 列。因此,每口井都会有不同的 NEUT 最大值/最小值、坡度、截距,并且它将对该特定井的整个 NEUT 列使用该变换,然后继续进行下一个。
这些是我引用的经典步骤:
坡度 = (log (PHIHI / PHILO)) / (CPSLO - CPSHI)
INTCPT = PHIHI / (10^ (CPSLO * SLOPE))
NEUTPOR = INTCPT * 10^ (SLOPE * NEUT)
CPSHI = 每口井的最大中子计数 (NEUT) 值 (UWI)
CPSLO = 每口井的最小中子计数 (NEUT) 值 (UWI)
PHIHI = 整个数据集的最小平均 PHI
PHILO = 整个数据集的最小平均 PHI
这是我目前想出的:
q = pd.read_csv('DataFile.csv')
grouped = q.groupby(['UWI'])
for key_uwi in grouped:
CPSHI = key_uwi.NEUT.min()
CPSLO = key_uwi.NEUT.max()
y = np.array([PHILO, PHIHI])
y = 10**(y / 10.0)
x = np.array([CPSHI, CPSHLO], 1)
key_uwi.loc[q.UWI ==key_uwi] = key_uwi.NEUTPOR = [p[i] for i in key_uwi.NEUT]
q['NEUTPOR'] = NEUTPOR
我收到错误:“元组”对象没有属性“NEUT”
最大的问题是我需要每个 UWI 组的最大和最小 NEUT,然后分别对每个 UWI 的整个 NEUT 列运行 y = mx+b 变换。
我什至不知道我是否正确地执行了 for 循环,我什至不确定要查找什么来找到我正在寻找的内容,以获得更多帮助。任何朝着正确方向的推动都会有所帮助。
【问题讨论】:
-
您的文字很长。你能去掉所有的背景信息,专注于实际问题吗?
-
我会改写,看看能不能删减。
-
我把描述删减了很多,希望这足够清楚。如果您有任何问题,请告诉我。
-
还是太多了。相关的只有代码和错误消息。缺少的是完整的错误回溯以及
q是什么。
标签: python python-3.x for-loop pandas-groupby