查找两列范围之间的样本

时间:2019-04-08 18:09:32

标签: python pandas numpy

我是python编程的新手。我找不到任何编写我这部分代码的方法。如果有人可以帮助我,我将不胜感激。

我有一个具有3个属性(4000条记录)的数据框。 属性x1,x2,class(Binary)。

首先,我做了一个散点图,意识到x1的范围是3到13,而x2的范围是3到8

我想获取某些范围内的数据:例如:

if 2.5< x1 < 3.5 and 3.5< x2 < 4.5 ---> df1

if 3.5 <=x1 < 4.5 and 4.5<=x2 < 5.5 ---> df2

if ....

1 个答案:

答案 0 :(得分:1)

正如Mstaino指出的那样,布尔掩码是访问一列或多列中一系列值的正确策略。

由于您是python编程(以及熊猫)的新手,因此将其分为两个步骤很重要。

首先,创建一个布尔掩码,然后创建逻辑掩码,然后生成逻辑掩码。

这是一个mcve,可以运行并重新运行,以查看如何获取相关的被屏蔽列中的值的采样。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(200,3),columns=['x1', 'x2', 'Class'])
mask1 = (df.x1 > -.4) & (df.x1 < .6)
mask2 = (df.x2 > -.4) & (df.x2 < .5)

# What do the masks look like in context?
df['mask1'] = mask1
df['mask2'] = mask1
print(df.head())

# apply the boolean masks so ranges in mask1 and mask2 are obtained
df1 = df[mask1 & mask2]

# sample the result
print(df1.sample(n=4))