如何找到数据帧行中最小的正整数



我到处寻找这个肯定存在的答案。我正在尝试在数据帧中找到每行最小的正整数。

想象一个数据框架

'lat':[-120, -90, -100, -100],
'long':[20, 21, 19, 18],
'dist1':[2, 6, 8, 1],
'dist2':[1,3,10,5]}```

以下函数给我最小值,但包括底片。即df['lat']列。

df.min(axis = 1)

显然,我可以删除最后一列,或者转换为字符串或其他东西,但我稍后将需要它。最后一列是唯一具有负值的列。我试图返回一个新列,如

df['min_dist'] = [1,3,8,1]

我希望这一切都有意义。谢谢你的帮助。

一般情况下,您可以使用DataFrame.where将负值标记为null并将其从min计算中排除:

df['min_dist'] = df.where(df > 0).min(1)
df
lat  long  dist1  dist2  min_dist
0 -120    20      2      1       1.0
1  -90    21      6      3       3.0
2 -100    19      8     10       8.0
3 -100    18      1      5       1.0

仅筛选dist列并应用最小函数:

df.assign(min_dist = df.iloc[:, -2:].min(1))
Out[205]: 
lat  long  dist1  dist2  min_dist
0 -120    20      2      1         1
1  -90    21      6      3         3
2 -100    19      8     10         8
3 -100    18      1      5         1

直接使用:

df['min_dist'] = df[df > 0].min(1)

最新更新