使用熊猫提前迭代优化两列计算

时间:2020-09-10 03:19:26

标签: python-3.x pandas numpy

我有此代码段,该代码段在两列上进行计算,如果得到一些递增的模式,则将其视为有效的Key。如何在熊猫中优化它?

示例代码

这里只有track_id组。但是,我会有很多track_id组,我需要对所有组都应用相同的组。

import pandas as pd
import numpy as np

tid = [5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5.,
       5., 5., 5., 5., 5., 5., 5., 5., 5., 5., 5.]

j = [ 0.,  0.,  0.,  0.,  0.,  1., 52., 53., -1., -1., -1., -1., -1.,
       -1., -1., -1., -1.,  1., -1., -1., -1., -1., -1., -1., -1., -1.,
       -1., -1.]

k = [ 0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., 56., 57., 58.,
       59., 60., 61., 62., 63., -1., -1., -1., -1., -1., -1., -1., -1.,
       -1., -1.]
rules = ['rule_1_start', 'rule_1_end']
data = {'rule_1_start': j, 'rule_1_end': k, 'track_id': tid }
df = pd.DataFrame.from_dict(data)
for r in range(0, len(rules), 2):
    track_groups = df.groupby('track_id')
    for key, item in track_groups:
        _min = np.argmin(item[rules[r]].values)
        _max =  np.argmax(item[rules[r+1]].values)
        if _min < _max: 
            print(f"{key}")

图案

我正在尝试找到类似这样的东西。如果您看到这两列,则表明存在增值模式。第1列具有77, 78,79,第2列具有82-91。模式应该从col1增加到col2,反之亦然。

enter image description here

我可以在pandas或numpy中使用其他任何方式来获得更高的性能吗?

0 个答案:

没有答案