Выбрать самое частое значение в строке датафрема

Рейтинг: 0Ответов: 1Опубликовано: 16.01.2023

Есть датафрейм.

    column1 column2 column3
0   high    medium  low
1   medium  medium  high
2   low     medium  low

нужно в каждой строке найти повторяющиеся значение и записать его в колонку4, если повторяющихся значений нет, то выбрать рандомно. Т.е в первой строке значение выбирается рандомно и сохраняется в колонку4, во второй строке в колонку4 сохраняется medium, в третьей строке колонка4=low.

при выполнении этого кода

df['column4'] = df.apply(lambda row: max(row, key=row.count), axis=1)

получаю ошибку: ValueError: Series.count level is only valid with a MultiIndex

Ответы

▲ 2Принят
df.mode(axis=1).apply(lambda x: x.dropna().sample(1).values[0], axis=1)

0    high
1  medium
2     low

pandas.mode

The mode of a set of values is the value that appears most often. It can be multiple values.

Для набора значений возвращает наиболее часто встречающийся элемент

pandas.sample

Return a random sample of items from an axis of object.

Возвращает случайный элемент

Про dropna, думаю, можно не писать