首页 > 解决方案 > Python3:设置数据范围

问题描述

我觉得这一定很基本,但我找不到简单的方法。我正在使用 python3 我有许多带有 x,y 数据的数据文件,其中 x 从 0 到 140(浮动)。比方说

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

我想导入 25.4 到 28.1 范围内的 x 值及其在 y 中的对应值。每个文件可能有不同的长度,因此值 x>25.4 可能出现在不同的行中。

我正在寻找与 gnuplot 中的以下命令等效的内容:

set xrange [25.4:28.1]  

这次我不能使用 gnuplot,因为数据处理需要的不仅仅是 gnuplot 的功能。我用 Pandas 导入了数据,但我无法设置范围。谢谢你。

标签: python-3.xrange

解决方案


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]

Pandas 和 Numpy 为您提供了一种更简洁的方法。考虑以下演示.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)]


推荐阅读