2016-12-23 5 views
1

生成されたSQL SELECT文のフィールドを使用するために、データフレームにcsvファイルを読み込もうとしています。データは次のようになります。データフレームの行をループする

  0 1  2  3  4   5   6 
0 status1 A0 NaN NaN  3 Customer1 customer Id 
1 status2 A1 NaN NaN  3 Customer2 customer Id 
2 status3 A2 NaN 1253  3 Customer3 customer Id 
3 status4 A3 27.0 L0  12 Customer4 customer Id 
4 status5 A3 30.0 NaN  12 Customer5 customer Id 

を、各行の上に私のループとは、文字列にフィールドを挿入しようとすると:

for row in M: 
print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union" 
      .format(M[row][0], M[row][1], M[row][2], M[row][3], M[row][4], M[row][5], M[row][6])) 

このエラーがスローされます。

line 14, in print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union".format(M[row][0], M[row][1], M[row][2], M[row][3], M[row][4], M[row][5], M[row][6])) IndexError: arrays used as indices must be of integer (or boolean) type

方法numpy 2d配列をループするのですか?

import pandas as pd 
import os 
import numpy as np 

path = '../resources' 

X = pd.read_csv('../resources/data.csv', header=None).as_matrix() 

for row in X: 
    print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union".format(X[row][0], X[row][1], X[row][2], X[row][3], X[row][4], X[row][5], X[row][6])) 
+0

これはパンダであり、numpyではありません。 –

+1

numpyが必要な場合は、 'X.values'を使います。 –

+0

[pandasデータフレームをループする]の複製があります(http://stackoverflow.com/questions/34958526/looping-through-a-pandas-dataframe) –

答えて

0

あなたはそのようなデータフレームを反復処理することはできません。

は、ここに完全なスクリプトです。

for i, row in M.iterrows(): 
    print("(Select '{}' as disposition, '{}' as category_code, '{}' as status_code, '{:02f}' as Payer_reason_code, {} as precedence, {} as source_id, '{}' as reco_id) union" 
     .format(row[0], row[1], row[2], row[3], row[4], row[5], row[6])) 
関連する問題