Как добавить новый столбец, имеющий номер вхождения значения в столбце?Python

Программы на Python
Anonymous
Как добавить новый столбец, имеющий номер вхождения значения в столбце?

Сообщение Anonymous »

Для кадра данных Polars:

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

df = pl.from_repr("""
┌───────┬───────┬───────┐
│ Col_1 ┆ Col_2 ┆ Col_3 │
│ ---   ┆ ---   ┆ ---   │
│ str   ┆ str   ┆ i64   │
╞═══════╪═══════╪═══════╡
│ A     ┆ a     ┆ 1     │
│ B     ┆ b     ┆ 2     │
│ C     ┆ c     ┆ 3     │
│ D     ┆ d     ┆ 4     │
└───────┴───────┴───────┘
""")
и список:

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

display_list = ['A','B','B','B','C','D','D','A']
Я хочу, чтобы результат был в этом формате:

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

shape: (8, 4)
┌───────┬───────┬───────┬───────────────┐
│ Col_1 ┆ Col_2 ┆ Col_3 ┆ Occurrence_No │
│ ---   ┆ ---   ┆ ---   ┆ ---           │
│ str   ┆ str   ┆ i64   ┆ i64           │
╞═══════╪═══════╪═══════╪═══════════════╡
│ A     ┆ a     ┆ 1     ┆ 1             │
│ B     ┆ b     ┆ 2     ┆ 1             │
│ B     ┆ b     ┆ 2     ┆ 2             │
│ B     ┆ b     ┆ 2     ┆ 3             │
│ C     ┆ c     ┆ 3     ┆ 1             │
│ D     ┆ d     ┆ 4     ┆ 1             │
│ D     ┆ d     ┆ 4     ┆ 2             │
│ A     ┆ a     ┆ 1     ┆ 1             │
└───────┴───────┴───────┴───────────────┘
Я хочу, чтобы строки дублировались в зависимости от того, сколько раз первый столбец появляется в списке. Кроме того, мне нужен столбец Occurrence_No, который действует как счетчик появления первого столбца в кадре данных. Порядок строк в DataFrame не имеет значения.
Я могу получить результат, кроме Occurrence_No, используя этот код:

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

df = df.with_columns(pl.col('Col_1').map_elements(lambda x: display_list.count(x)).alias('occur'))
df = df.select(pl.exclude('occur').repeat_by('occur').explode())
Приведенные выше коды создают количество строк в зависимости от того, сколько раз они встречаются в списке.
Как добавить столбец Occurrence_No?

Подробнее здесь: https://stackoverflow.com/questions/772 ... n-a-column

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