Вы можете использовать grouby
с min()
:
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
с округленными числами (например, 5 цифр):
df.groupby(df['x'].round(5))['y'].min()
Это даст 8018 x-y
пар с использованием предоставленного вами набора данных.