Проблема: у меня 2 кадра данных;
- У df1 есть coil_id, sample_factor, seq.Каждый идентификатор coil_id имеет 449 записей (диапазон 1–499) и имеет около 1000 уникальных идентификаторов coil_id.
- df2 имеет идентификатор coil_id, sample, gauge.Каждый идентификатор coil_id имеет приблизительно 500 записей (диапазон 10-5000; может быть меньше) и имеет те же 1000 уникальных идентификаторов coil_id, что и в df1.
df1:
+-------+-----------------
|coil_id|sample_factor|SEQ
+-------+-----------------
|E101634|10.4066 | 1
|E101634|20.8132 | 2
|E101634|31.2198 | 3
|E101634|41.6264 | 4
|E101634|5220.033 |449
df2:
+-------+------+------+--
|coil_id|SAMPLE|GAUGE |
+-------+------+------+--
|E101634| 10|0.0565|
|E101634| 20|0.0569|
|E101634| 30|0.0567|
|E101634| 40|0.0561|
|E101634| 5000| 0.055|
Я не могу объединить обе таблицы из-за разного количества записей.Если я сделаю это, мои значения образца и изменения датчика.Поэтому я не должен присоединяться.Затем мне нужно проверить, находится ли df1.sample_factor между df2.sample и df2.sample + 1 , а затем выполнить расчет по манометру.Пример: (если 10,4 лежат между 10 и 20, то 0,0565 + (((0,0569-0,0565 / 10) * (10,4-10)) ) в основном Pro-rate датчика.
Я хочу перебрать каждую строку из Sample_factor в df1 и проверить, находится ли она между sample [i] и sample [i + 1] в df2.а затем выполнить pro-rate на манометре и добавить результаты в df1.
Я пробовал это:
def new_gauge : for row in df1('sample_factor'):
if df1['sample_factor'] > df2['sample'] and df1['sample_factor'] < df2['sample'] + 1:
return df2['gauge']+(((df2['gauge']+1)-df2['gauge'])/10)*(df1['sample_factor']-df2['sample']))
df1['new_gauge'] = df1.apply(new_gauge)
Я знаю, что это абсолютно неправильно в синтаксисе, это просто для того, чтобы понять, что яхочу.
Любая помощь приветствуется.Спасибо:)
ВЫХОД:
![enter image description here](https://i.stack.imgur.com/gqWpo.png)