我有一个类似于这个简化版本的问题:
实验结果保存在excel表格中,我进行了处理 使用Python处理数据并将其转换为数据帧。你知道吗
下表给出了两个表格: 表\u数据帧竞争中的竞争保存 表\u数据帧标准中的标准存储
>>> data = [["Gold+",1,30,35],["Silver+",1,25,30],["Bronze+",1,20,25],["Gold",2,20,25],["Silver",2,15,20],["Bronze",2,10,15]]
>>> std = pd.DataFrame(data,columns=['Title','League','Start','End'])
>>> std
Title League Start End
0 Gold+ 1 30 35
1 Silver+ 1 25 30
2 Bronze+ 1 20 25
3 Gold 2 20 25
4 Silver 2 15 20
5 Bronze 2 10 15
>>> data = [["John",1,26],["Ryan",1,33],["Mike",1,9],["Jo",2,15],["Riko",2,21],["Kiven",2,13]]
>>> race = pd.DataFrame(data,columns=['Name','League','Distance'])
>>> race
Name League Distance
0 John 1 26
1 Ryan 1 33
2 Mike 1 9
3 Jo 2 21
4 Riko 2 15
5 Kiven 2 13
>>>
我想检查每个球员的距离,并根据标准获得他们的头衔:
Title <= distance in [start, end) and need to match league
例如: 乔来自二级联赛,距离在[15,20]之间。请注意,这不是[10,15],因此他得到了标题“银”
预期结果如下:
Name League Distance Title
John 1 26 Silver+
Ryan 1 33 Gold+
Mike 1 9 N/A
Jo 2 21 Gold
Riko 2 15 Silver
Kiven 2 13 Bronze
我可以使用两个循环来实现这一点,这两个循环基本上从表\u race中获得每个距离,并从每一行race(League,distance)中搜索(l,d)
寻找条件:
l == League && d >= Start && d < End
但是这个方法是O(N^2),太慢了,因为我的数据很容易超过100000,需要几个小时才能完成。你知道吗
有更好的解决办法吗?你知道吗
仍在研究解决方案,但需要从以下方面着手:
Merge和Multiple conditions的教程和缺点链接。你知道吗
相关问题 更多 >
编程相关推荐