我正在尝试运行一个循环,将几个压缩文本文件导入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
非常感谢任何协助。
答案 0 :(得分:1)
尝试动态生成val_1
,val_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()
无效。
也许=
符号应该是其他东西?