如何根据 Pandas 中的间隔分配值

tin*_*can 4 python pandas

我试图根据另一个数据帧的两个值之间的值向数据帧列分配一个值:

intervals = pd.DataFrame(columns = ['From','To','Value'], data = [[0,100,'A'],[100,200,'B'],[200,500,'C']])
print('intervals\n',intervals,'\n')

points = pd.DataFrame(columns = ['Point', 'Value'], data = [[45,'X'],[125,'X'],[145,'X'],[345,'X']])
print('points\n',points,'\n')

DesiredResult = pd.DataFrame(columns = ['Point', 'Value'], data = [[45,'A'],[125,'B'],[145,'B'],[345,'C']])
print('DesiredResult\n',DesiredResult,'\n')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

非常感谢

Sco*_*ton 5

我们来使用map,首先使用pd.IntervalIndexwithfrom_arrays方法创建一个系列:

intervals = intervals.set_index(pd.IntervalIndex.from_arrays(intervals['From'], 
                                                             intervals['To']))['Value']

points['Value'] = points['Point'].map(intervals)
Run Code Online (Sandbox Code Playgroud)

输出:

   Point Value
0     45     A
1    125     B
2    145     B
3    345     C
Run Code Online (Sandbox Code Playgroud)