【问题标题】:Python "Can't Assign to Operator" Error using loop function使用循环函数的 Python“无法分配给运算符”错误
【发布时间】:2016-02-23 20:30:55
【问题描述】:

我正在尝试运行一个循环来将几个压缩文本文件导入 Pandas 并创建交叉列表。代码如下:

def delta_calc(start_year,end_year):
for x in range(start_year, end_year+1,1):
    return
    "disposition"+x+"_24mo_df"=pd.read_table("path/lps_"+x+".txt",compression='gzip',sep='\t')
    "disposition"+x+"_24mo_df".sort(['loan_id','last_paid_interest_date'], ascending=[True,False], inplace=True)
    "disposition"+x+"_24mo_nodups_df"="disposition"+x+"_24mo_df".drop_duplicates('loan_id')
    "disposition"+x+"_24mo_crosstab"=pd.crosstab("disposition"+x+"_24mo_nodups_df".initial_investor_code,"disposition"+x+"_24mo_nodups_df".current_investor_code, margins=True)

但是,我收到以下错误消息:

   File "<ipython-input-63-d662d71d1354>", line 4
           "disposition"+x+"_24mo_df"=pd.read_table("path/lps_"+x+".txt",compression='gzip'    ,sep='\t')
^
SyntaxError: can't assign to operator

任何帮助将不胜感激。

【问题讨论】:

  • 错误信息再清楚不过了。你想做的是a+b = some_function()。这应该是/做什么?此外,您的语法已关闭 (return \n ...\n...\n)
  • 变量名不是字符串,您不能像编写字符串一样编写它们。 "disposition"+x+"_24mo_df" 是表达式,不是变量,不能赋值。

标签: python function variable-assignment


【解决方案1】:

这种看起来像一个常见的初学者错误,试图动态生成变量名称,如val_1val_2、...、val_N,而不是在您的情况下使用列表或一堆列表.

您可以使用.append() 将新项目添加到列表的后面,并使用[-1] 进行索引以获取列表中的当前最后一项。开头看起来像这样:

def delta_calc(start_year,end_year):
    disposition_24mo_df = []
    disposition_24mo_nodups_df = []
    disposition_24mo_crosstab = []
    for x in range(start_year, end_year+1):
        disposition_24mo_df.append(pd.read_table(...))
        disposition_24mo_df[-1].sort(...)

虽然我没有任何使用 pandas 的实际经验,所以这可能是离谱的。

【讨论】:

    【解决方案2】:

    问题是你正在分配一个表达式:

    "disposition"+x+"_24mo_df"=pd.read_table("path/lps_"+x+".txt",compression='gzip',sep='\t')
    

    同样的问题:

    "some string" + x + "another string" = some_code()
    

    这是无效的。

    也许= 符号应该是别的东西?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-29
      • 2014-07-01
      • 2023-03-18
      • 2021-04-06
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多