Я работаю с фреймом данных, где у меня есть вес каждой строки по вероятности.Теперь я хочу выбрать строку с наибольшей вероятностью и для этого использую pandas idxmax (), однако, когда есть связи, он просто возвращает первую строку среди тех, которые связывают.В моем случае Я хочу получить все строки, которые связывают .
Кроме того, я делаю это в рамках исследовательского проекта, в котором я обрабатываю миллионы фреймов данных, подобных приведенному ниже, поэтому проблема заключается в том, чтобы поддерживать его быстрым.
Пример:
Мои данные выглядят так:
data = [['chr1',100,200,0.2],
['ch1',300,500,0.3],
['chr1', 300, 500, 0.3],
['chr1', 600, 800, 0.3]]
Из этого списка я создаю кадр данных pandas следующим образом:
weighted = pd.DataFrame.from_records(data,columns=['chrom','start','end','probability'])
Что выглядит следующим образом:
chrom start end probability
0 chr1 100 200 0.2
1 ch1 300 500 0.3
2 chr1 300 500 0.3
3 chr1 600 800 0.3
Затем выберите строку, которая соответствует argmax (вероятности), используя:
selected = weighted.ix[weighted['probability'].idxmax()]
Что, конечно, возвращает:
chrom ch1
start 300
end 500
probability 0.3
Name: 1, dtype: object
Есть ли (быстрый) способ получить все значениякогда есть галстуки?
спасибо!