熊猫-如何从几行中的值中获取每一行的最小值

时间:2020-07-19 18:19:34

标签: pandas

我具有以下结构的熊猫数据框:

|index | a  | b  |  c |  d | e  |
| ---- | -- | -- | -- | -- | -- |
|0     | -1  | -2|  5 |  3 | 1  |

如何仅使用a-e列中的值来获得每一行的最小值?

对于上面的示例行,(5,3,1)的最小值应为1,而不是(-2)。

1 个答案:

答案 0 :(得分:0)

您可以在所有行上使用循环并将条件应用于行。

例如:

df = pd.DataFrame([{"a":-2,"b":2,"c":5},{"a":3,"b":0,"c":-1}])

#   a   b   c
#0  -2  2   5
#1  3   0   -1

def my_condition(li):
    li = [i for i in li if i>=0]
    return min(li)

min_cel = []
for k,r in df.iterrows():
    li = r.to_dict().values()
    min_cel.append( my_condition(li) )
    
df["min"] = min_cel

#   a   b   c   min
#0  -2  2   5   2
#1  3   0   -1  0

您还可以在一行上编写相同的代码:

df['min'] = ddd.apply(lambda row: min([i for i in row.to_dict().values() if i>=0]) , axis=1)