Как получить индекс максимального количества требуемой строки в столбце списка кадра данных поляров?Python

Программы на Python
Anonymous
Как получить индекс максимального количества требуемой строки в столбце списка кадра данных поляров?

Сообщение Anonymous »

У меня есть фрейм данных Polars:

Код: Выделить всё

df = pl.DataFrame({'doc_id':[
['83;45;32;65;13','7;8;9'],
['9;4;5','4;2;7;3;5;8;10;11'],
['1000;2000','76;34;100001;7474;2924'],
['100;200','200;100'],
['3;4;6;7;10;11','1;2;3;4;5']
]})
каждый список состоит из идентификаторов документов, разделенных точкой с запятой. Если какой-либо элемент списка имеет более высокую точку с запятой, необходимо найти его индекс, создать новый столбец как len_idx_at и заполнить индексным номером. .
Например:

Код: Выделить всё

['83;45;32;65;13','7;8;9']
Этот список состоит из двух элементов, в первом элементе около 4 точек с запятой, следовательно, в нем 5 документов, аналогично во втором элементе около 2 точек с запятой, а это означает, что у него 3 документа. .
Здесь мы должны рассмотреть индекс элемента с наибольшим количеством документов в приведенном выше случае - это будет индекс 0, поскольку он имеет 4 точки с запятой.
ожидаемый результат:

Код: Выделить всё

shape: (5, 2)
┌─────────────────────────────────┬────────────┐
│ doc_id                          ┆ len_idx_at │
│ ---                             ┆ ---        │
│ list[str]                       ┆ i32        │
╞═════════════════════════════════╪════════════╡
│ ["83;45;32;65;13", "7;8;9"]     ┆ 0          │
│ ["9;4;5", "4;2;7;3;5;8;10;11"]  ┆ 1          │
│ ["1000;2000", "76;34;100001;74… ┆ 1          │
│ ["100;200", "200;100"]          ┆ 0          │
│ ["3;4;6;7;10;11", "1;2;3;4;5"]  ┆ 0          │
└─────────────────────────────────┴────────────┘
Если все элементы в списке имеют одинаковое количество точек с запятой, предпочтительным будет нулевой индекс, как показано в выводе выше.

Подробнее здесь: https://stackoverflow.com/questions/742 ... lumn-of-po

Вернуться в «Python»