Выбрать самое частое значение в строке датафрема
Есть датафрейм.
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
Ответы (1 шт):
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, думаю, можно не писать