У меня есть CSV-файл со следующими столбцами: UniqueWellIdentifier (UWI); Глубина; Пористость (PHI); NeutCount (NEUT).
Для каждого UWI мне нужно знать, что такое NEUT max и min, чтобы определить наклон и точку пересечения для каждой группы UWI. Каждый UWI будет иметь немного другое преобразование для использования в столбце NEUT. Таким образом, каждая скважина будет иметь разные NEUT max / min, SLOPE, INTERCEPT, и он будет использовать это преобразование для всего столбца NEUT для этой c скважины, а затем перейдет к следующей.
Это классические c шаги, на которые я ссылаюсь:
SLOPE = (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
Я получаю сообщение об ошибке: объект 'tuple' имеет нет атрибута 'NEUT'
Большая проблема в том, что мне нужны max и min NEUT для каждой группы UWI, а затем запустить преобразование y = mx + b через весь столбец NEUT для КАЖДОГО UW Я отдельно.
Я даже не знаю, правильно ли я делаю для l oop, и я не уверен, что даже искать, чтобы найти то, что я ищу, для дополнительных Помогите. Любой пу sh в нужном направлении поможет.