Заменить все значения строки на Частое значение строки - PullRequest
1 голос
/ 11 октября 2019

У меня есть df как это:

Index  Parameters   A    B   C   D   E
1      Apple        1    2   3   4   5
2      Banana       2    4   5   3   5
3      Potato       3    5   3   2   1
4      Tomato       1    1   1   1   1
5      Pear         $4    $5   $5   $5   $3

Постановка задачи :

На основе значения Parameters столбец и строка Pear Я хочучтобы получить наиболее частое значение и заменить его всеми значениями

Вывод df :

Index  Parameters   A    B   C   D   E
1      Apple        1    2   3   4   5
2      Banana       2    4   5   3   5
3      Potato       3    5   3   2   1
4      Tomato       1    1   1   1   1
5      Pear         $5    $5   $5   $5   $5

Мой код :

df_transposed = df.set_index("Parameters").T.rename_axis('Fruits').reset_index()
df_transposed["Pear"] = df_transposed.Pear.mode()
df = df_transposed.set_index("Fruits").T.rename_axis('Parameters').reset_index()

У меня есть решение, которое прекрасно работает с транспонированием df и использованием mode на нем, а затем переставляет данные.

Дело в том, что это слишком много шагов. Просто интересно, можно ли это сделать и по ряду

1 Ответ

1 голос
/ 11 октября 2019

Попробуйте нарезать и df.mode. Поскольку вы сказали, что вам нужно заменить так много столбцов, вы можете фильтровать столбцы на основе столбцов, которые НЕ заменяются.

cols = df.columns.drop(['Index', 'Parameters'])

df.loc[df.Parameters.eq('Pear'), cols] = df.loc[df.Parameters.eq('Pear'), cols].mode(axis=1)[0]


Out[77]:
   Index Parameters   A   B   C   D   E
0      1      Apple   1   2   3   4   5
1      2     Banana   2   4   5   3   5
2      3     Potato   3   5   3   2   1
3      4     Tomato   1   1   1   1   1
4      5       Pear  $5  $5  $5  $5  $5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...