Обновите столбцы информационного кадра, если значение находится между интервалами столбца другого информационного кадра - PullRequest
0 голосов
/ 11 февраля 2019

Мой первый фрейм данных (df1) выглядит так:

Un      s   spread_bin  gamma_star exp_star gamma_zero  interval
0   0   0.000000    NaN   NaN     NaN            NaN    [0.0, 2.828e-05)
1   1   0.000110    A   1.5466  -1.210453e-07   1.5466  [8.485e-05, 0.0001131)
2   2   0.000308    A   1.5466  -1.007298e-07   1.5466  [0.0002828, 0.0003111)
3   3   0.000484    A   1.5466  -8.274816e-08   1.5466  [0.0004808, 0.0005091)
4   4   0.000601    A   1.5466  -7.075857e-08   1.5466  [0.0005939, 0.0006222)
5   5   0.000691    A   1.5466  -6.149985e-08   1.5466  [0.0006788, 0.000707)

А второй (df2):

time                       close    high    low     open    midprice    s
0   2018-12-17 15:15:00 0.00318624  0.00318624  0.00318240  0.00318240  0.00318432  0.001206
1   2018-12-17 15:16:00 0.00319673  0.00319673  0.00318576  0.00318576  0.003191245 0.003438
2   2018-12-17 15:19:00 0.00319617  0.00319617  0.00319581  0.00319617  0.00319599  0.000113
3   2018-12-17 15:20:00 0.00318881  0.00319617  0.00318881  0.00319582  0.00319249  0.002305
4   2018-12-17 15:22:00 0.00319000  0.00319000  0.00319000  0.00319000  0.00319000  0.000000
5   2018-12-17 15:26:00 0.00319000  0.00319556  0.00319000  0.00319556  0.00319278  0.001741
6   2018-12-17 15:27:00 0.00318989  0.00319000  0.00318989  0.00319000  0.003189945 0.000034

Мне нужно обновить новый столбец df2['gamma'] следующим образом: если df2 ['s'] попадает в один из интервалов df1 ['interval'], выберите связанный df1 ['gamma_star'] и обновите df2 ['gamma'] этимзначение!Я понятия не имею, как поступить, любая помощь?спасибо!

1 Ответ

0 голосов
/ 11 февраля 2019

Я уверен, что есть более хороший способ сделать это, но быстрый способ делает:

def in_interval(value, lower, upper):
    if lower <= value <= upper:
        return True
    else:
        return False


df2['gamma'] = 0
for i, s in enumerate(df2['s']):
    for j, interval in enumerate(df1['interval']):
        if in_interval(s, interval[0], interval[1]):
            df2.loc[i, 'gamma'] = df1.loc[j, 'gamma_star']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...