如何过滤数据框中具有特定值和不同值的条目?

2024-05-26 22:58:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有房地产数据:

neighborhood  type_property  type_negotiation  price
Smallville       house           rent        2000
Oakville       apartment       for sale      100000
King Bay         house         for sale      250000
...

我有一个groupby,它确定了数据集中哪些值是待售房屋,然后在一个名为df\u-breakdown的新数据框中返回每个街区这些房屋的第10百分位和第90百分位以及数量。结果如下:

neighborhood tenthpercentile  ninetiethpercentile  Quantity
King Bay         250000.0             250000.0         1
Smallville        99000.0             120000.0         8
Oakville          45000.0             160000.0         6
...

我现在想把这些信息带回我的原始房地产数据集,并过滤掉所有的上市,如果它是一个出售的房子超过百分之九十或低于百分之十相对于百分之计算每个街区。例如,我想在奥克维尔社区买一套价格35万的房子

我以前用过这个论点:

df1 = df[df.price < df.price.quantile(.90)]

但我不知道如何利用它来为每个邻里提供不同的值,甚至不知道它是否有用。事先谢谢你的帮助


Tags: 数据dffortypepropertysalepricehouse
2条回答

可能不是最优雅的,但你可以加入百分位聚合到每个房地产数据

df.join(df.groupby(‘neighborhood’).quantile([0.1,0.9]), on=‘neighborhood’)

在手机上,如果语法不完美,请原谅我

您可以将它们设置为具有相同的索引,广播百分位数,并且只需使用.between

所以首先

df2 = df2.set_index('neighborhood')
df = df.set_index('neighborhood')

然后,broadcast使用loc

df.loc[:, 't'], df.loc[:, 'n'] = df2.tenthpercentile, df2.ninetiethpercentile

最后

df.price.between(df.t, df.n)

这就产生了

neighborhood
Smallville    False
Oakville       True
King Bay       True
King Bay      False
dtype: bool

所以要过滤,就切片

df[df.price.between(df.t, df.n)]

相关问题 更多 >

    热门问题