pandas dataframe: выбор строк по переменной диапазона с плавающей запятой - PullRequest
0 голосов
/ 10 апреля 2020

Я новичок Python и хотел найти решение для выбора строк по переменной, которая должна быть диапазоном с плавающей запятой. В качестве переменной я назначаю массив numpy, созданный с помощью numpy arange, поскольку встроенный диапазон python не принимает float как шаг. Вот пример того, что я попробовал:

import numpy as np
import pandas as pd
data = [[1, 100], [2,200], [3, 300], [4, 400], [5, 500], 
    [5.5, 550], [6, 600], [6.5, 620]] 
df = pd.DataFrame(data, columns = ['small_number', 'big number'])

rng = np.arange(2, 7, 0.1)
df.loc[df.small_number.isin(rng)]

К сожалению, дает только первое значение и не находит другого. Вывод:

small_number    big number
1   2.0         200

Как создать переменную с плавающей точкой, которая затем будет передана для выбора строк DataFrame?

1 Ответ

0 голосов
/ 10 апреля 2020

Вам нужно округлить, чтобы проверить наличие в массиве. Числа с плавающей точкой в ​​массиве не являются точными, как указано в документации .

When using a non-integer step, such as 0.1, the results will often not be consistent.

В этом случае мы можем использовать np.around и округлять до одного десятичного знака место.

df.loc[df.small_number.isin(np.around(rng, decimals=1))] 

   small_number  big number
1           2.0         200
2           3.0         300
3           4.0         400
4           5.0         500
5           5.5         550
6           6.0         600
7           6.5         620
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...