Как найти запись панд с положительным значением, ближайшим к нулю? - PullRequest
0 голосов
/ 11 декабря 2018

Мне нужно найти запись панд, где значение ближе всего к нулю И положительное.

Вот небольшая выборка данных:

                 Date  Budget
0 2018-02-24 11:20:16    6.35
1 2018-02-24 11:34:10    5.85
2 2018-02-24 16:41:12    3.85
3 2018-02-25 00:55:18    1.10
4 2018-02-25 01:36:47   -0.90
5 2018-02-25 03:12:51   -1.90
6 2018-02-25 11:29:31   -2.90
7 2018-02-25 18:20:35   -3.65

Самый близкий, который я получил, использовал SO-ответ:

near_zero = df['Budget'].abs().min()

, который возвращает только значение, а незапись плюс значение является преобразованным отрицательным значением.(index [4]) Мне нужен шаблон поиска, который будет для этого образца возвращать оба значения столбца index [3], самое низкое положительное значение «бюджета»

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Это даст вам правильное значение:

near_zero = df[df['Budget'] > 0].min()
0 голосов
/ 11 декабря 2018

Или попробуйте использовать clip:

near_zero=df['Budget'].clip(lower=0).replace(0,np.inf).min()

Или clip_lower:

near_zero=df['Budget'].clip_lower(0).replace(0,np.inf).min()

И оба случая:

print(near_zero)

Is:

1.1
0 голосов
/ 11 декабря 2018

Используйте boolean indexing для фильтра положительных значений, а затем получите min:

near_zero = df.loc[df['Budget'] > 0, 'Budget'].min()
print (near_zero)
1.1

и затем, если возможно, несколько минут:

df1 = df[df['Budget'] == near_zero]
print (df1)

                 Date  Budget
3 2018-02-25 00:55:18     1.1

Илиесли только одно минимальное значение, спасибо @coldspeed:

df1 = df.loc[[df.loc[df['Budget'] > 0, 'Budget'].idxmin()]]
print (df1)

                 Date  Budget
3 2018-02-25 00:55:18     1.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...