Я предполагаю, что есть более эффективный способ сравнения, который я делаю.
В настоящее время у меня есть две панды DataFrames.
DataFrame A
выглядит так:
Location Tier Other
0 100 1 'Blah'
1 200 1 'Blah'
2 10 1 'Blah'
3 30 1 'Blah'
4 500 1 'Blah'
DataFrame B
выглядит так:
Start Stop Tier Other
0 400 600 1 'Blah'
1 5 20 2 'Blah'
Я хотел бы найти все строки, чьи Location > Start
и Location < End
и Tier
совпадают. Таким образом, в приведенном выше примере строка 4 из DataFrame A
имеет Location
, который больше 400
, но меньше 600
, а Tier
равно `в обоих DataFrames, поэтому он должен как-то быть возвращен, как добавление к окончательному фрейму данных.
Вот как я сейчас сравниваю:
for i in A():
matching = matching.append(B[(B.Tier == i.Tier) & (B.Start < i.Location) & (B.Stop > i.Location)], ignore_index=True)
return matching
Есть ли более быстрый способ сделать это, так как мой код работает довольно медленно?