如何根据条件从 Python、Pandas 中的另一列中删除一列中的部分值?

How to drop part of the values from one column by condition from another column in Python, Pandas?

我有一个包含许多异常值和许多观察值的房地产数据框。 我有变量:总数 arearooms 的数量(如果房间数 = 0,则为单间公寓)和 kitchen_area.

从我的数据框中提取“最小化”:

dic = [{'area': 40, 'kitchen_area': 10, 'rooms': 1, 'price': 50000 },
 {'area': 20, 'kitchen_area': 0, 'rooms': 0, 'price': 50000},
 {'area': 60, 'kitchen_area': 0, 'rooms': 2, 'price': 70000},
 {'area': 29, 'kitchen_area': 9, 'rooms': 1, 'price': 30000},
 {'area': 15, 'kitchen_area': 0, 'rooms': 0, 'price': 25000}]
df = pd.DataFrame(dic, index=['apt1', 'apt2','apt3','apt4', 'apt5'])

我的目标是消灭apt3,因为法律规定非单间公寓的厨房面积不能小于5平方米。 换句话说,我想从我的数据框中删除所有包含非工作室公寓数据的行(rooms>0),但 kitchen_area <5

我试过这样的代码:

df1 = df.drop(df[(df.rooms > 0) & (df.kitchen_area < 5)].index)

但它只是根据我输入的多个条件从 kitchen_arearooms 两列中删除了所有数据。

清洁

mask1 = df.rooms > 0
mask2 = df.kitchen_area < 5

df1 = df[~(mask1 & mask2)]
df1

      area  kitchen_area  rooms  price
apt1    40            10      1  50000
apt2    20             0      0  50000
apt4    29             9      1  30000
apt5    15             0      0  25000

pd.DataFRame.query

df1 = df.query('rooms == 0 | kitchen_area >= 5')
df1

      area  kitchen_area  rooms  price
apt1    40            10      1  50000
apt2    20             0      0  50000
apt4    29             9      1  30000
apt5    15             0      0  25000