使用循环函数

时间:2016-02-23 20:30:56

标签: python function variable-assignment

我正在尝试运行一个循环,将几个压缩文本文件导入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

非常感谢任何协助。

2 个答案:

答案 0 :(得分: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(...)

虽然我对大熊猫没有任何实际经验,所以这可能是偏离基础的。

答案 1 :(得分:0)

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

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

同样的问题:

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

无效。

也许=符号应该是其他东西?