質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

317閲覧

Pythonにてcsvファイルの重複した際に、余計なインデックスが列として振られる

green2021

総合スコア16

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/09/22 08:24

前提

Pythonにて、複数あるcsvを連結し、重複を削除したcsvを出力しましたが、1列目に余計なインデックスが列として振られます。

※私が書いたコードでは、csvを処理するためにpandasではなくdaskというライブラリを使用しています。
理由として、実際に取り扱うcsvは容量が多く、処理が終わらないため、高速処理を行えるdaskを利用しています。
使用感は、ほとんどpandasと変わらないです。

実現したいこと

①指定したフォルダ内のcsvを一つずつ結合し、指定した列以外で重複したものがあれば削除していく
②①で重複を削除したものを新たに保存

しかし、②で作成csvファイルの1列目に余計なものが追記される。

発生している問題・エラーメッセージ

以下が、重複を削除したcsvファイルの一例です。 1列目にラベル名がないインデックスがあります。 #result_1.csv ,共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 0,1,10,111,1111111,a 1,2,20,222,2222222,b 2,3,30,333,3333333,c 3,4,40,444,4444444,d 4,9,90,999,9999999,nine 5,1994,90,999,9999999,nine 6,1995,90,999,9999999,nine 上記のように、1列目にいらない列がインデックスとして振られています。 これが出ないようにしたいです。 またフォルダの構造は、 ・ └── sabun_data │     ├── output_data │ ├── result_0TEST_BASICB.csv │     ├── result_1.csv │     ├── result_2.csv │     └── result_3.csv│    ├── 0TEST_BASICB.csv ├── 1.csv ├── 2.csv └── 3.csv ・shitsumon.py ・header.csv

該当のソースコード

Python

1# coding: shift-jis 2 3from email import header 4import dask.dataframe as dd 5import os 6import glob 7 8 9# テキストの内容を配列に入れる(ヘッダーを加える。) 10with open('header.txt', 'r') as f: 11 label_list = f.read().split("\n") 12 print(label_list) 13 print(len(label_list)) 14 15# ========================================================================================== 16 17# フォルダ内)のcsvを一気に結合し、重複を削除 18# 最初に、「df_concat」にヘッダーのみ記載のcsvファイルを保持しておく 19df_concat = dd.read_csv("header.csv", encoding='CP932') 20os.chdir('./sabun_data./') 21 22 23for i in glob.glob("*.csv*"): 24 25 tmp = dd.read_csv(i, encoding='CP932') 26 # どのファイルを結合したかを以下のprint文にて記載 27 print(str(i)+"を結合しました。") 28 # ファイルを一つずつ読み取り、結合する。 29 df_concat = dd.concat([df_concat, tmp]) 30 31 # 結合したものから重複削除 32 df_concat = df_concat.drop_duplicates(subset=['共通商品コード','メーカープライベートコード','メーカーコード'], keep='last').reset_index(drop=True) 33 print("結合し、重複削除したものの件数は"+str(len(df_concat))+"件です。") 34 35 # 重複削除したものをフォルダ「output_data」に保存 36 df_concat.to_csv("./output_data./result_"+str(i), single_file = True, encoding='CP932') 37 38# ============================================================== 39# 0TEST_BASICB.csv 40共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 411,10,111,1111111,a 42 43#1.csv 44共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 451,10,111,1111111,a 462,20,222,2222222,b 473,30,333,3333333,c 484,40,444,4444444,d 499,90,999,9999999,nine 501994,90,999,9999999,nine 511995,90,999,9999999,nine 52 53#2.csv 54共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 551,10,111,9999999,aaaaaa 565,50,555,5555555,e 571,100,1111,1234567,x 582,20,9876,01010101,b 593,3030,333,3333333,c 603,30,333,3333333,xxxxxxxxxx 611,10,111,12121212,new_first 62 63#3.csv 64共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 651,10,111,1111111,a 663,30,333,3333333,c 674,40,444,4444444,d 689,90,999,9999999,nine 691993,90,999,9999999,nine 70 71 72# ============================================================== 73# result_0TEST_BASICB.csv 74,共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 750,1,10,111,1111111,a 76 77# result_1.csv 78,共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 790,1,10,111,1111111,a 801,2,20,222,2222222,b 812,3,30,333,3333333,c 823,4,40,444,4444444,d 834,9,90,999,9999999,nine 845,1994,90,999,9999999,nine 856,1995,90,999,9999999,nine 86 87 88# result_2.csv 89,共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 900,2,20,222,2222222,b 911,4,40,444,4444444,d 922,9,90,999,9999999,nine 933,1994,90,999,9999999,nine 944,1995,90,999,9999999,nine 955,5,50,555,5555555,e 966,1,100,1111,1234567,x 977,2,20,9876,1010101,b 988,3,3030,333,3333333,c 999,3,30,333,3333333,xxxxxxxxxx 10010,1,10,111,12121212,new_first 101 102# result_3.csv 103,共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 1040,2,20,222,2222222,b 1051,1994,90,999,9999999,nine 1062,1995,90,999,9999999,nine 1073,5,50,555,5555555,e 1084,1,100,1111,1234567,x 1095,2,20,9876,1010101,b 1106,3,3030,333,3333333,c 1117,1,10,111,1111111,a 1128,3,30,333,3333333,c 1139,4,40,444,4444444,d 11410,9,90,999,9999999,nine 11511,1993,90,999,9999999,nine 116 117#header.csv 118共通商品コード,メーカープライベートコード,メーカーコード,JANコード,半角50文字 119

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

余計なものがインデックスのことであるなら、to_csvindex=Falseを指定すればよいです。

投稿2022/09/22 08:31

can110

総合スコア38267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

green2021

2022/09/22 08:42

ありがとうございます。 to_csvの初歩的な部分を見落としていました。 自分の未熟さを実感しました、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問