Рассмотрим этот набор данных:
cat > example_file.txt <<EOL
bins|1,1|2,2|3,4|5,6|7,9|10,12|13,18|19,24|25,36|37,54|55,81
1,1||431|501|651|861|1081|1461|1711|2071|2371|2531
2,2|||261|401|631|871|1291|1611|2001|2291|2431
3,4|||121|271|551|1011|1191|1511|1901|2211|2351
5,6||||101|361|901|1251|1301|1691|2011|2221
7,9|||||181|461|841|1151|1511|1821|2061
10,12||||||161|591|931|1291|1621|1821
13,18|||||||351|691|1091|1401|1571
19,24||||||||301|861|1451|1201
25,36|||||||||371|851|961
37,54||||||||||371|621
55,81|||||||||||351
EOL
, который я импортирую:
import pandas
example = pandas.read_csv('example_file.txt', sep = '|', index_col = 0)
Теперь имена строк и столбцов этой таблицы фактически являются интервалами.Я могу заставить панд узнать их так:
col_bin = pandas.IntervalIndex.from_tuples([tuple(list(map(int, x.split(',')))) for x in example.columns])
row_bin = pandas.IntervalIndex.from_tuples([tuple(list(map(int, x.split(',')))) for x in example.index])
example.columns = col_bin
example.index = row_bin
Теперь я хотел бы найти значение ячейки, соответствующее парам значений, таким как (11, 13).
Например, для (11, 13) значение ячейки равно 591.
Это потому, что значение индекса строки (11) принадлежит интервалу (10,12) [это6-я строка] и значение индекса col (13) принадлежит интервалу (13,18) [это 7-й столбец], а значение (строка, столбец) (6, 7) в таблице равно 591.