【问题标题】:UnboundLocalError: local variable 'y' referenced before assignment in PandasUnboundLocalError:在 Pandas 中赋值之前引用了局部变量“y”
【发布时间】:2019-08-30 17:02:21
【问题描述】:

我正在尝试将一个功能应用于列,但出现错误

Name    weight
Person1 30
Person2 70

我的代码在下面

def classify(x):
    if 0 <= x < 20:
        y = "0 to 20%"
    if 20 < x < 40:
        y = "20 to 40%"
    if 40 < x < 60:
        y = "40 to 60%"
    if 60 < x < 80:
        y = "60 to 80%"
    if 80 < x <= 100:
        y = "80 to 100%"
    return ( y)

df['Target'] = df['weight'].apply(lambda x: classify(x)) 抛出本地绑定错误

如果我使用 print 而不是 return 我可以看到输出

预计结束

    Name    weight  Target
    Person1     30  20 to 40
    Person2     70  60 to 80

【问题讨论】:

  • 您需要一个else 子句,以便在您的条件都不满足时定义y。但是cut 是这样做的方法
  • I put else: False, Then my Target is 'False' for 2 rows
  • 这两行的weight 的值是多少......应该很容易看出它为什么会中断。 (我的猜测是 20、40、60 或 80)。您似乎缺少一些 &lt;= 标志
  • 您尝试使用仅包含 2 行的 csv 文件执行。 Jusee 错误

标签: python pandas function if-statement apply


【解决方案1】:

为什么不使用cut

df['Target']=pd.cut(df['weight'],[0,20,40,60,80,100])

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2012-11-14
    • 2013-11-29
    相关资源
    最近更新 更多