我有以下数据框:
user_id var gp 95_q
147 1 -75.19 529.3280
20395 2 -109.11 609.0675
32035 2 36.00 609.0675
33725 2 120.98 609.0675
47808 1 -17.89 529.3280
48633 1 -19.49 529.3280
110330 1 800 529.3280
117277 2 271.80 609.0675
1122081 2 7123.78 609.0675
129120 2 21.00 609.0675
131222 2 -4.95 609.0675
131480 1 18.58 529.3280
我需要创建一个新的数据框,其中对于每个组(var = 1和var = 2)行,其中gp超过95_q被过滤,因为你可以看到95_q对于每个组是不同的。
我采取了以下方法:
df.groupby('var').filter(lambda x: (x['gross_profit'] > x['95_q']))
但它返回以下错误:
filter function returned a Series, but expected a scalar bool
当我将代码转换为:
df.groupby('var').filter(lambda x: (x['gross_profit'] > x['95_q']).any())
我仍然得到一个仍然具有超过95_q
的值的数据帧答案 0 :(得分:0)
正如@Scott Boston提到的布尔索引就足够了:
df[df['gp'] < df['95_q']]