我有两个列表X和Y。
X = [0.034, 0.026, 0.028, ...]
Y = [0.0099, 0.0065, 0.0061, ...]
我想获得每个X值的Y最小值。我尝试了groupby方法。我需要在边界上取点。在下图中以黑色标记。我对所有点都有X和Y坐标。
答案 0 :(得分:4)
您可以将HashSet/ConcurrentHashMap
与grouby
一起使用:
min()
在处理浮点数时,您可能想对四舍五入的数字(例如5位数字)进行import pandas as pd
# two y values for 0.034 and 0.026
X = [0.034, 0.026, 0.028, 0.034, 0.026]
Y = [0.0099, 0.0065, 0.0061, 0.1, 0.000001]
df = pd.DataFrame({'x': X, 'y': Y})
x y
0 0.034 0.009900
1 0.026 0.006500
2 0.028 0.006100
3 0.034 0.100000
4 0.026 0.000001
df.groupby('x')['y'].min()
x
0.026 0.000001
0.028 0.006100
0.034 0.009900
Name: y, dtype: float64
:
groupby
使用您提供的数据集将得到8018 df.groupby(df['x'].round(5))['y'].min()
对。
答案 1 :(得分:1)
这是Python中获取最小值的一种方法.. 参见示例
list1, list2 = [123, 223, 154, 235], [456, 700, 200]
print "min value element : ", min(list1)
print "min value element : ", min(list2)
当我们运行上面的程序时,它会产生以下结果-
min value element : 123
min value element : 200
上述答案中所述的熊猫解决方案:
df.groupby('x')['y'].min()