问题:我有 2 个数据框;
df1 具有线圈 ID、样本因子、序列。每个coil_id 有449 条记录(范围1-499)并且有大约1000 个唯一的coil_id。
df2 具有线圈 ID、样本、仪表。每个coil_id 大约有500 条记录(范围10-5000;可以更少)并且具有与df1 中相同的1000 个唯一coil_id。
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 之间,然后对gauge进行计算。示例:(如果 10.4 位于 10 和 20 之间,则0.0565+(((0.0569-0.0565)/10)*(10.4-10)))基本上按比例分配仪表。
我想从 df1 中的 Sample_factor 迭代每一行,并检查它是否位于 df2 中的 sample[i] 和 sample[i+1] 之间。然后对仪表执行按比例计算并将结果添加到 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)
我知道它在语法上绝对错误,只是为了了解我想要什么。
任何帮助表示赞赏。谢谢:)
输出:
慕少森
相关分类