Djangoでアプリを作成しています。
CSVファイルからデータを読み取り、それをデータベースに登録する仕組みを実装しようとしています。
CSVデータの処理は、pandasを使おうと考えました。
import.csvの中身は、例えば、こんな感じです。
・仕訳日時
・借方分類コード
・借方科目コード
・借方補助科目コード
・借方金額
・貸方分類コード
・貸方科目コード
・貸方補助科目コード
・貸方金額
・備考
* 平成29年10月7日 1 160 9133 646 0 100 8057 電話機コード 平成29年10月7日 1 160 9133 1123 雑巾、モップ、洗剤 平成29年10月7日 1 160 9133 1785 マグネット、アクリル板、アクリル棒 平成29年10月7日 1 160 9133 204 スプレー塗料 平成29年10月7日 1 160 9133 1213 アクリル材、アクリルカッター 平成29年10月7日 1 160 9133 1358 スプレー塗料、クリアファイル 平成29年10月7日 1 160 9170 1244 カラーコーン 平成29年10月7日 1 160 9170 484 電池
上記のCSVファイルは、会計ソフトの仕訳データで、空欄もあります。そのため、fillna(0)を用い、空欄を0で埋めようとしました。
下記のcsv_import関数によって、CSVからデータを読み込み、データベースに登録する所までを処理したいと考えました。
JournalDiaryというのは、仕訳データのmodelです。
python
1# views.py 2 3def csv_import(request): 4 df = pd.read_csv('import.csv', encoding="utf-8") 5 rows = df.fillna(0).iterrows() 6 for row in rows: # 各行ごとに処理 7 journal_diary = JournalDiary( 8 date = row[1][1] 9 dr_class = row[1][2] 10 dr_subject = row[1][3] 11 dr_auxiliary_subject = row[1][4] 12 dr_amount = row[1][5] 13 cr_class = row[1][6] 14 cr_subject = row[1][7] 15 cr_auxiliary_subject = row[1][8] 16 cr_amount = row[1][9] 17 content = row[1][10] 18 ) 19 journal_diary.save() # データベースに登録 20
しかし、結果的に、
「invalid literal for int() with base 10: ' '」というエラーが出てしまいます。
10進法の問題のような感じがするのですが、どこを直したら良いかが分かりません。
ちなみにデータベースには、途中まで登録がうまくいっているのですが、いつもそこで終わってしまいます。
読み込めた行の次の行は、下記の内容です。
貸方科目が空欄の行です。
平成29年10月2日 0 345 5 203637 H29.7月分
試しに、CSV上で空欄の箇所に全て0を入れてみましたが、結果は同じでした。
どこに問題があるか、思い当たる点がある方、ご教示頂けないでしょうか。
手がかりが思いつかないので、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/24 03:47
退会済みユーザー
2017/12/24 06:08
退会済みユーザー
2017/12/24 06:12