我有一个数据框。在那几列中,我要删除小于和大于某些临界值的值。
例如:我要删除“价格”列数据小于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
这不符合我的预期。我需要如何组合小于和大于条件,并且无法弄清楚
答案 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)