Pandas lookup value in a range from another table – StackOverflow
の様な処理を考える.Pandasで処理する場合,コメントの様にintervalindexとget_indexerで処理するのがリーズナブル.個人的には,Numpyでブロードキャストを用いる方がシンプルかなと.
import pandas as pd import numpy as np df1 = pd.DataFrame({'Date': {0: '06-01', 1: '06-02', 2: '06-03', 3: '06-04'}, 'Value': {0: 3, 1: 7, 2: 9, 3: 16}, }) df2 = pd.DataFrame({'Start': {0: 1, 1: 6, 2: 11, 3: 16}, 'Stop': {0: 5, 1: 10, 2: 15, 3: 20}, 'Fruit': {0: 'Apple', 1: 'Orange', 2: 'Pear', 3: 'Mango'},}) v = df1['Value'].to_numpy() m = (df2['Start'].to_numpy()<=v[:, None]) & (v[:, None]<=df2['Stop'].to_numpy()) df1.assign(Fruit=df2['Fruit'].to_numpy()[m.nonzero()[1]])
Date Value Fruit 0 06-01 3 Apple 1 06-02 7 Orange 2 06-03 9 Orange 3 06-04 16 Mango