Python3: установить диапазон данных - PullRequest
0 голосов
/ 05 декабря 2018

Я чувствую, что это должно быть очень просто, но я не могу найти простой способ.Я использую python3 У меня есть много файлов данных с данными x, y, где x идет от 0 до 140 (плавающий).Допустим,

0, 2.1
0.5,3.5
0.8,3.2
...

Я хочу импортировать значения х в диапазоне от 25,4 до 28,1 и их соответствующие значения в у.Каждый файл может иметь разную длину, поэтому значение x> 25,4 может отображаться в разных строках.

Я ищу что-то эквивалентное следующей команде в gnuplot:

set xrange [25.4:28.1]  

На этот раз я не могу использовать gnuplot, потому что для обработки данных требуется больше, чем возможностей gnuplot.Я импортировал данные с помощью Pandas, но не могу установить диапазон.Спасибо.

1 Ответ

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

r = range(start, stop, step) - шаблон для этого в Python.

Так, например, чтобы получить:

r == [0, 1, 2]

Вы бы написали:

r = [x for x in range(3)]

И чтобы получить:

r == [0, 5, 10]

Вы бы написали:

r = [x for x in range(0, 11, 5)]

Это не очень далеко, потому что:

r = [0, .2, 4.3, 6.3]
r = [x for x in r if x in range(3, 10)]
# r == []

Но вы можете сделать:

r = [0, .2, 4.3, 6.3]
r = [x for x in r if ((x > 3) & (x < 10))]
# r == [4.3, 6.3]

Панды и Нампи дают вам гораздо более краткий способ сделать это.Рассмотрим следующую демонстрацию .between

import pandas as pd
import io

text = io.StringIO("""Close   Top_Barrier Bottom_Barrier
0       441.86  441.964112  426.369888
1       448.95  444.162225  425.227108
2       449.99  446.222271  424.285063
3       449.74  447.947051  423.678282
4       451.97  449.879254  423.029413""")

df = pd.read_csv(text, sep='\\s+')
df = df[df["Close"].between(449, 452)] # between
df

Так что для вашего df вы можете сделать то же самое: df = df[df["x"].between(min, max)]

...