建立一个函数以基于截止值删除数据集中的最小值和最大值?

时间:2019-07-03 19:26:43

标签: python pandas

我有一个数据框。在那几列中,我要删除小于和大于某些临界值的值。

例如:我要删除“价格”列数据小于500且大于20000的行,同时也删除“区域”列数据小于20且大于1000的行

截断看起来像这样:[('price', 500, 20000), ('area', 20, 1000)]

我需要在python中构建一个函数来实现这一点。

data = data_frame
cut = cutoffs

for a in range(len(cut)):
    data = data[data[cut[a][0] >= cut[a][1]]]

for b in range(len(cut)):
    data = data[data[cut[b][0] <= cut[b][2]]]
    return data

这不符合我的预期。我需要如何组合小于和大于条件,并且无法弄清楚

1 个答案:

答案 0 :(得分:0)

由于您提到cutoffs可以有更多行,所以您可以这样做:

for name, min, max in cutoffs:
  df = df[~(df[name] < min) & ~(df[name] > max)]

如果您想要相同的功能,请尝试:

def apply_cutoffs(df, cutoffs)
  for name, min, max in cutoffs:
    df = df[~(df[name] < min) & ~(df[name] > max)]
  return df

这样称呼:

df = apply_cutoffs(df, cutoffs)