2016-05-03 11 views
0

私はPythonには新しく、これを数日間作業しています。私は9つのExcelファイルを持っています。私はループしていて、パンダのデータフレームを作成しています。if文を使用したPython forループ:TypeError:文字列インデックスは整数でなければなりません

9つのxls_fileのデータフレームの各々は、これらの列がある: コード、date_pub(各xls_file内で均一が、各xls_file間で一意である)、years_q ...

xls_file

私の他のデータフレームが呼び出されます見積もりこれは、これらの列を持つ単一のデータフレームです: REL、EST、date_pub(ユニークである)

estimate

私の目標は、

(AR_41、AR_42、DG_44、DG_46)という名前の4つのパンダのデータフレームを作成することです

データフレームは、「見積もり」に非常によく似ていますが、私はこのエラーを取得しています同じdate_pub

x=0 
for x in range(1, 9): 
    xls_file = pd.ExcelFile('Data' + str(x) + '.xls') 

    final_data = estimate 

    for row in estimate: 
     for innerrow in xls_file: 
      if innerrow['date_pub'] == row['date_pub']: 
       final_data['value'].append(row.ix[:,-1]) 

で与えられたxls_fileの最後の列に等しい追加の列という名前の値を持っているでしょう。チェックする際に「文字列のインデックスは整数でなければなりません」:

if innerrow['date_pub'] == row['date_pub']: 
+0

私は分かりませんが、 'append(row.ix [:: - 1])'を意味しましたか? – enedil

+0

AFAIK行は配列です。配列は、文字列ではなく整数で索引付けされます。おそらくExcelFileにはヘッダーを考慮してファイルを解析する方法がありますが、指定していないので、単純な配列になります。 –

+0

また、あなたは '推定値 'をどのように埋め込んだのかを示していませんでした。おそらく同じ問題です。 –

答えて

0

をエラーは、それが対象とする必要があるように見えるとき、innerrowまたは行のいずれかが実際に文字列を指している意味するかもしれません。変数が何を指しているのかを再確認してください。行や列が必要なときに、次元を過度に絞り込んで文字列にアクセスできます。

'string'[i]をPythonで呼び出すと、 'string'のi番目の文字を取得します。ここでiは必ず整数です。 たとえば、s = 'certain_word'の場合、print s[2]'r'と印刷されます。 これはあなたのコードがしようとしている可能性があり、私は 'date_pub'は別の変数の種類と推測しています。

関連する問題