请考虑以下数据框:
#!/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
循环或冗长代码的情况下实现这一目标?
如果此问题已得到回答,请指点我,并为重复而感到抱歉(搜索没有得到我想要的东西!)
答案 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