私の最初のデータフレーム(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)
そして2番目のもの(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']を更新します!どうすればいいのかわからないのですが、何か助けはありますか?ありがとう!
これを行うにはもっと良い方法があると確信していますが、速い方法は次のとおりです。
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']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加