사용 searchsorted
: A['timestamp']
의 각 값에 대한
A['group'] = B['timestamp'].searchsorted(A['timestamp'])
는 인덱스 값이 반환됩니다. 이 인덱스는 의 정렬 된 값 중에서 A
의 값이 정렬 된 순서를 유지하기 위해 B
에 삽입 될 위치를 나타냅니다. 이 B['timestamp'][0]
(즉 1.739869
) 앞에 오는 때문에 예
,
import numpy as np
import pandas as pd
np.random.seed(2016)
N = 10
A = pd.DataFrame({'timestamp':np.random.uniform(0, 1, size=N).cumsum()})
B = pd.DataFrame({'timestamp':np.random.uniform(0, 3, size=N).cumsum()})
# timestamp
# 0 1.739869
# 1 2.467790
# 2 2.863659
# 3 3.295505
# 4 5.106419
# 5 6.872791
# 6 7.080834
# 7 9.909320
# 8 11.027117
# 9 12.383085
A['group'] = B['timestamp'].searchsorted(A['timestamp'])
print(A)
는
timestamp group
0 0.896705 0
1 1.626945 0
2 2.410220 1
3 3.151872 3
4 3.613962 4
5 4.256528 4
6 4.481392 4
7 5.189938 5
8 5.937064 5
9 6.562172 5
수율을 따라서, 타임 스탬프는 기 0.896705
0
이다. 2.410220
은 B['timestamp'][0]
(즉, 1.739869
)보다 크고 B['timestamp'][1]
(즉, 2.467790
)보다 작기 때문에 그룹 1
에 속합니다.
또한 A['timestamp']
의 값이 B['timestamp']
에서 컷오프 값 중 하나 정확히 같은 경우 수행 할 작업을 결정해야합니다. 당신이 B['timestamp'][i] <= A['timestamp'][i] <= B['timestamp'][i+1]
i
을 반환 searchsorted하려면
B['timestamp'].searchsorted(A['timestamp'], side='left')
를 사용합니다. 당신이 그 상황에서 i+1
을 반환 searchsorted하려면
B['timestamp'].searchsorted(A['timestamp'], side='right')
를 사용합니다. side
을 지정하지 않으면 기본적으로 side='left'
이 사용됩니다.