我正在尝试编码逻辑以过滤pandas数据帧。我想将逻辑编码为字典,以子组名称为键,并将子组的筛选函数作为值:
analytics_table_mappings = {
"Jets Fans": BaseFilter.for_jets_fans,
"Patriots Fans": BaseFilter.for_patriots_fans,
...
}
我的
BaseFilter.for_jets_fans
和
BaseFilter.for_patriots_fans
是静态方法,包含为每组风扇筛选我的数据帧的逻辑。
但是,我想创建一个函数
BaseFilter.for_team_fans
接受
team
字符串参数,指定要筛选哪个队的球迷。
我目前的尝试是编码这样的东西
analytics_table_mappings = {
"Jets Fans": {"func": BaseFilter.for_team_fans, "args": "Jets"},
"Patriots Fans": {"func": BaseFilter.for_team_fans, "args": "Patriots"},
...
}
我的问题是:有没有一种更优雅、更不复杂、更易于维护的方法?
在上下文中,我是一个数据科学家,这是一个大型模型的一部分,我最终需要把它交给我的工程团队来维护和维护。他们要求我限制特定领域语言(DSL)的数量,以帮助软化学习曲线并提高代码库的可维护性。我想用
"Jets Fans": {"func": BaseFilter.for_team_fans, "args": "Jets"},
"Patriots Fans": {"func": BaseFilter.for_team_fans, "args": "Patriots"},
有可能迅速发展成为一个非常复杂和无法管理的DSL。我之所以对过滤逻辑进行编码,是因为我们过滤的度量类型和过滤方式可能会频繁演变,所以我没有将它们硬编码到我的代码基中,而是将过滤逻辑分开
configurations.py
由字典组成的文件。
analytics_table_mappings
)因此,我希望在我的过滤器逻辑中保持灵活性,同时仍然使它对我的工程师是可维护的。
附加项:
我还需要能够处理必须传递多个参数的实例。例如:
"Jets Fans": {"func": BaseFilter.for_team_fans, "args": "Jets"},
"Patriots Fans": {"func": BaseFilter.for_team_fans, "args": "Patriots"},
"NFC Fans": {"func": BaseFilter.for_team_fans, "args": ["Bears", "Packers", ...]}