我觉得这必须非常基础,但是我找不到简单的方法。 我正在使用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导入了数据,但无法设置范围。 谢谢。
答案 0 :(得分:0)
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)]