【问题标题】:Pandas / PEP8 - Is it correct to have such a long line of code? Can it be improved?Pandas / PEP8 - 有这么长的代码行是否正确?可以改进吗?
【发布时间】:2020-02-23 12:30:40
【问题描述】:

在编写代码时,我通常会像这样写很长的行,但我已经忘记了发生了什么,而且我发现这样的代码很难阅读。我必须解构并运行每个部分以查看实际情况。

但是,当我自学资源时,我说高级用户会使用一行代码,而初学者会使用很多代码。

所以我的问题真的是:

保留这一行(保持原样)会更好吗?如果是这样,如何将其格式化为 79 个字符以下(根据 PEP8)?

或者最好把它分解成小块,以便以后更容易回来(或者奇怪的是我无法理解它)?

top_products_for_customer_group = stock_trans[(stock_trans["SA_DACCNT"].isin(customer_seg_df[self.customer_seg_df["Label"] == customer_seg_df[self.customer_seg_df["SA_DACCNT"] == acc]["Label"].iloc[0]]["SA_DACCNT"]))].groupby(["SA_PRODUCT", "SA_DESC"]).count()["SA_ACCOUNT"].reset_index().sort_values("SA_ACCOUNT", ascending=False)

【问题讨论】:

  • 高级用户会使用一行代码,而初学者会使用很多代码”我认为这不是真的。可能是这样的情况,高级用户需要一行代码,而初学者需要几行代码,但这并不意味着将多行压缩成一行。这更像是一种个人风格,但我会说任何可以自然命名的名称。例如,将您在 ser.isin(collection)) 中引用的任何集合保存到变量中。
  • 它被认为是糟糕的风格,至少对于那些关心编写可读、可维护代码的人来说是这样。理想情况下,您的代码是自记录的
  • 我同意@ayhan,我想补充一点,不要(太)害羞添加一个功能。我不知道上下文,但我有一种感觉,很多代码在其他地方被重用,只是为了有一个单行,而它可以被封装在一个名称可能是的函数中不言自明。

标签: python pandas formatting pep8


【解决方案1】:

分行使代码更易于阅读,但每次出现问题或必须进行更改时仍需要重新设计。这是非常不专业的代码。

top_products_for_customer_group = (
    stock_trans[(
        stock_trans["SA_DACCNT"].isin(
            customer_seg_df[
                self.customer_seg_df["Label"] == customer_seg_df[
                    self.customer_seg_df["SA_DACCNT"] == acc
                ]["Label"].iloc[0]
            ]["SA_DACCNT"]
        )
    )]
    .groupby(["SA_PRODUCT", "SA_DESC"])
    .count()["SA_ACCOUNT"]
    .reset_index()
    .sort_values("SA_ACCOUNT", ascending=False)
)

【讨论】:

    猜你喜欢
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多