#python #pandas
#python #pandas
Вопрос:
Я пытаюсь присвоить значение столбцу фрейма данных на основе значения, которое находится МЕЖДУ двумя значениями другого фрейма данных:
intervals = pd.DataFrame(columns = ['From','To','Value'], data = [[0,100,'A'],[100,200,'B'],[200,500,'C']])
print('intervalsn',intervals,'n')
points = pd.DataFrame(columns = ['Point', 'Value'], data = [[45,'X'],[125,'X'],[145,'X'],[345,'X']])
print('pointsn',points,'n')
DesiredResult = pd.DataFrame(columns = ['Point', 'Value'], data = [[45,'A'],[125,'B'],[145,'B'],[345,'C']])
print('DesiredResultn',DesiredResult,'n')
Большое спасибо
Ответ №1:
Давайте map
сначала создадим ряд, используя pd.IntervalIndex
from_arrays
метод with:
intervals = intervals.set_index(pd.IntervalIndex.from_arrays(intervals['From'],
intervals['To']))['Value']
points['Value'] = points['Point'].map(intervals)
Вывод:
Point Value
0 45 A
1 125 B
2 145 B
3 345 C
Ответ №2:
Другой подход:
def calculate_value(x):
return intervals.loc[(x >= intervals['From']) amp; (x < intervals['To']), 'Value'].squeeze()
desired_result = points.copy()
desired_result['Value'] = desired_result['Point'].apply(calculate_value)