在熊猫的非数字列中查找最小值

时间:2019-02-27 22:38:10

标签: python python-3.x pandas min

请考虑以下数据框:

#!/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 :(得分:1)

简单的方法是先使用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