I looked at your code very quickly, but it looks like you need to use .filter after a .groupby...
edit:
Let me clarify. From the blog-post:
> since a `DataFrameGroupBy` object doesn’t have a `.query()` or boolean-indexing shortcut of its own, so filtering within groups needs `.apply()` again, and the surrounding pipeline has to be rebuilt around it:
Hence you really do need one of the versions of the code I gave. You can't do the naive approach with just `.groupby().filter(lambda: )`, since you need a row-wise decision.
It's late here, I'm going to bed, perhaps I'll write the code tomorrow when I'm at my laptop and not on my phone.
(sales
.assign(country_median=lambda df_: (
df_.groupby("country")["amount"].transform("median")
))
.query("amount <= country_median * 10")
.assign(net=pd.col('amount') - pd.col('discount'))
.groupby("country", as_index=False)
.agg(total=("net", "sum"))
)