问题:我有2个数据帧
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_因子是否在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]之间。然后对gauge执行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)
我知道它在语法上是完全错误的,只是为了一个我想要的想法。你知道吗
感谢您的帮助。谢谢:)
输出:
下面是与预期输出匹配的起始示例数据
df1
df2
第一步是
merge_asof
将样本因子带到最接近的样本。然后计算每一行的new_gauge
列。但是,只有当sample\u factor介于当前行和下一行的值之间,并且coil\u id对于当前行和下一行是相同的时,我们才会实际指定一个值。你知道吗输出:
merged
在本例中,我们没有指定最后一行,因为您提供的子集中没有Sample>;60。你知道吗
相关问题 更多 >
编程相关推荐