Нахождение минимального значения среди нечисловых столбцов в пандах - PullRequest
0 голосов
/ 28 февраля 2019

Рассмотрим следующий кадр данных:

#!/usr/bin/python3.5
import pandas as pd # version 0.23.4
x_df = pd.DataFrame([[1.2, 3.4, 'n', 'a'], [5.6, 'a', 'b', 7.8], 
                    [2.2, 'c', 1.35, 'd'], ['k', 'o', 'b', 'c']], 
                    columns=['A', 'B', 'C', 'D'])

Я пытаюсь достичь минимального значения для каждой строки (как показано ниже):

x_df =        A    B     C    D     min
         0  1.2  3.4     n    a    1.2
         1  5.6    a     b  7.8    5.6
         2  2.2    c  1.35    d    1.35
         3    k    o     b    c    nan

Я пытался сделать это, используя:

x_df['min'] = x_df.apply(lambda x: x.min(numeric_only=True), axis=1)

Однако это приводит к ошибке:

NotImplementedError: ('Series.min does not implement numeric_only.', 'occurred at index 0')

Есть ли простой способ добиться этого без использования циклов for или длинного кода?

Еслина этот вопрос уже дан ответ, пожалуйста, укажите мне и извините за дубликат (поиск не дал мне то, что я хотел!)

1 Ответ

0 голосов
/ 28 февраля 2019

Простой способ - сначала преобразовать в числовое значение, используя to_numeric, оставьте тот, который нельзя преобразовать в NaN, затем выполните min

df.apply(pd.to_numeric,errors='coerce',axis=1).min(1)
Out[96]: 
0    1.20
1    5.60
2    1.35
3     NaN
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...