当我添加另一层按位运算时,我的过滤器停止工作

问题描述

毫无疑问,解决方案非常简单,但是我很困惑。当我将以下过滤器应用于数据框时:

def filt(g):
return ((len(g)>=9) | (len(g)<=3))

milk_countries_exports_0401_filt=milk_countries_exports_0401.groupby(['Commodity','Partner']).filter(filt)
milk_countries_exports_0401_filt.groupby(['Commodity','Partner'])[['Trade Value (US$)']].aggregate([len,sum]).head(5)

我得到以下输出:

如果len(在这种情况下,意味着要交易的月份数)明显小于或等于3,或者大于或等于9,则为

但是,一旦我使过滤器变得更加复杂:

def filt(g):
       return ((len(g)>=9 & g['Trade Value (US$)'].max()<2500) | (len(g)<=3 & g['Trade Value (US$)'].min()>250000))

milk_countries_exports_0401_filt=milk_countries_exports_0401.groupby(['Commodity',sum]).head(5)

旨在返回以下国家或地区的数据框:a)交易至少9个月,每月交易少于2500美元,或b)交易最多3个月,每月交易至少250000美元。就像前面一样,输出应该包含不超过3或不小于9的len值,但是我得到了:

仅显示一个示例,因为我也仅排在前5行,但是关于len的过滤器部分似乎已被忽略,如您从英属维尔京群岛的6 len中可以看到的那样。 如何使它按预期工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)