我知道pandas
和numpy
具有组合功能,例如pd.cut
和np.digitalize
。但是,当具有大型数组/列表/数据帧时,这些功能非常有用。就我而言,使用这些方法似乎有些过分,因为它只是我项目中的一个变量
现在,我有一个连续变量,我使用以下函数将其装箱(使其离散):
def bin_data(self): # noqa: C901
if self.value <= 300000:
bin_cat = 999
elif 300000 < self.value <= 500000:
bin_cat = 15000
elif 500000 < self.value <= 1000000:
bin_cat = 30000
elif 1000000 < self.value <= 2200000:
bin_cat = 60000
elif 2200000 < self.value <= 4400000:
bin_cat = 120000
elif 4400000 < self.value <= 8800000:
bin_cat = 180000
elif 8800000 < self.value <= 17500000:
bin_cat = 300000
elif 17500000 < self.value <= 35000000:
bin_cat = 600000
elif 35000000 < self.value <= 70000000:
bin_cat = 900000
elif 70000000 < self.value <= 140000000:
bin_cat = 1500000
else:
bin_cat = 3000000
但这会导致一个flake8错误C901: function too complex
两个问题:
并不是说这段代码很复杂,但您可以通过一些
(end, result)
元组上的循环,以一种不太容易出错、不太复杂的方式编写这段代码。另外请注意,默认情况下,flake8不会检测复杂性,您必须通过设置阈值来选择该行为因为它不适合评论部分,这里有另一种方式来编写它,同时满足复杂性
免责声明:尽管我认为这与此特定信息无关,但我是目前的flake8维护者
相关问题 更多 >
编程相关推荐