Как я могу получить минимальное значение Y для каждого значения X? - PullRequest
0 голосов
/ 21 октября 2018

У меня есть два списка X и Y.

X = [0.034, 0.026, 0.028, ...]
Y = [0.0099, 0.0065, 0.0061, ...]

Я хочу получить минимальное значение Y для каждого значения X. Я пробовал с групповым подходом.Мне нужно набрать очки на границе.которые отмечены черным на рисунке ниже.У меня есть координаты X и Y для всех точек.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Это единственный способ получить минимальные значения в 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

PandasРешение, как указано в ответе выше:

df.groupby('x')['y'].min()
0 голосов
/ 21 октября 2018

Вы можете использовать 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 пар с использованием предоставленного вами набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...