Python 如何在数据框中的两个特定列的两个数字之间选择值以绘制为二维图形

Python 如何在数据框中的两个特定列的两个数字之间选择值以绘制为二维图形,python,dataframe,Python,Dataframe,我有一张这样的桌子。 我想绘制X和Y的值,其中0.120因为你很难找到一个起始点,我会首先收集你的数据并声明变量来保存X和Y数据 y_vals = [0.113, 0.117, 0.123, 0.129, 0.130, 0.160, 0.180, 0.210, 0.220, 0.260, 0.280] x_vals = list(range(0, (len(y_vals)*10), 10)) 上面,我将y\u vals初始化为一个包含每个y值的列表。对于x\u vals,我将其初始化为一个列表

我有一张这样的桌子。
我想绘制X和Y的值,其中0.120因为你很难找到一个起始点,我会首先收集你的数据并声明变量来保存X和Y数据

y_vals = [0.113, 0.117, 0.123, 0.129, 0.130, 0.160, 0.180, 0.210, 0.220, 0.260, 0.280]
x_vals = list(range(0, (len(y_vals)*10), 10))
上面,我将
y\u vals
初始化为一个包含每个y值的列表。对于
x\u vals
,我将其初始化为一个列表,随着
y\u vals
的变化而变化。例如,如果要向
y\u vals
添加更多y值,则
x\u vals
将随之增长
x_vals
利用
range()
函数进行增长。您可以阅读有关此函数的更多信息

现在我们有了数据,是时候着手解决问题了

def getPoints(x_vals, y_vals):
    points = []
    for i in range(0, len(y_vals) - 1):
        if ((y_vals[i] > 0.120) & (y_vals[i] < 0.140)):
            x = x_vals[i]
            y = y_vals[i]
            points.append([x, y])
    return points

现在,是将数据传递到
getPoints()
函数的时候了

points = getPoints(x_vals, y_vals)
print(points)
结果如下:

[[20, 0.13], [30, 0.129], [40, 0.123]]


完整脚本:

def getPoints(x_vals, y_vals):
    points = []
    for i in range(0, len(y_vals) - 1):
        if ((y_vals[i] > 0.120) & (y_vals[i] < 0.140)):
            x = x_vals[i]
            y = y_vals[i]
            points.append([x, y])
    return points

y_vals = [0.113, 0.117, 0.123, 0.129, 0.130, 0.160, 0.180, 0.210, 0.220, 0.260, 0.280]
x_vals = list(range(0, (len(y_vals)*10), 10))
points = getPoints(x_vals, y_vals)
print(points)
def getPoints(x\u vals,y\u vals):
点数=[]
对于范围(0,len(y_vals)-1)内的i:
如果((y_vals[i]>0.120)和(y_vals[i]<0.140)):
x=x_vals[i]
y=y_vals[i]
点。追加([x,y])
返回点
y_vals=[0.113,0.117,0.123,0.129,0.130,0.160,0.180,0.210,0.220,0.260,0.280]
x_vals=列表(范围(0,(len(y_vals)*10),10))
点=获取点(x值,y值)
打印(点数)
希望有帮助:)如果您有任何问题,请随时发表评论。

您可以根据条件选择数据帧的部分(本例中的行)

在这里查看熊猫教程:

如果要组合条件,请在每个条件周围放上括号(),并用您选择的运算符将它们连接起来(在本例中,我认为and运算符&将非常有用;-)

试着这样做:

df[(df['Y'] > 0.12) & (df['Y'] < 0.21)].plot(kind='scatter', x='X', y='Y')
df[(df['Y']>0.12)和(df['Y']<0.21)]。绘图(kind='scatter',x='x',Y='Y')

欢迎来到stack overflow:到目前为止您尝试了什么?如果你尝试了一些针对你的问题的方法,你会得到更好的回答。首先,我们来看看熊猫和数据帧。欢迎来到SO。不要将df作为图像附加,请在问题中包含最小可复制代码。这样,我们就可以在我们的环境中复制和粘贴您的数据,并帮助您解决这一难题。也适用于数据。很抱歉。我试图复制和粘贴,但它没有保留格式,看起来像表。此外,我从Excel电子表格中获取数据,但没有将数据作为代码输入。我想这很接近:数据={'X':[0,10,20,30,40,50,60,70,80,90100],'Y':[0.113,0.116,0.130,0.150,0.150,0.160,0.180,0.210,0.220,0.260,0.280]}非常感谢!不过,我有一个问题。我试图修改以捕获不同的数据点,特别是在0.100到0.240之间,但当我按如下方式修改时,它只返回[]:如果np.arange(0.100,0.240,0.001)中的y_vals[I]:@Qwynes我很抱歉,我在代码中犯了一个错误。请参阅我在文章中所做的编辑,其中我介绍了一种更简单、更准确的方法来检查一个数字是否在某个范围内。谢谢你抓住它!
df[(df['Y'] > 0.12) & (df['Y'] < 0.21)].plot(kind='scatter', x='X', y='Y')