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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

1回答

1014閲覧

2つのcsvファイルの結合

75na

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

0クリップ

投稿2022/06/09 04:35

編集2022/06/09 05:52

イメージ説明2つのcsvを結合したいのですが、No objects to concatenateというエラーが出てしまいます。コードは下記のように書きました。

python

1import pandas as pd 2import glob 3data_list = [] 4csv_files = glob.glob('*.csv') 5 6for i in csv_files: 7 data_list.append(pd.read_csv(i)) 8 9merge_csv = pd.concat(data_list, axis=0, sort=True) 10merge_csv.to_csv("total.csv", index = False)

結合するオブジェクトがないということは、data_listに何も入っていないということなのでしょうか。また、この結合によって得られる形というのは
元のファイル①
A  
B
C
元のファイル②
D
E
F
としたとき、
パターン1    
A D
B E
C F
パターン2
A  
B
C
D
E
F
のどちらのパターンで結合されるのでしょうか。ご回答よろしくお願いします!

追記
ディレクトリは添付の写真のようになっています

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

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

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

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

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

can110

2022/06/09 04:47

print(data_list)した結果と、pd.concatの引数「axis」を「0」とした理由(どういった目的、意図で?)を記載ください。
75na

2022/06/09 04:55

実行した結果 C:\Users\wa753>python C:\Users\Documents\csv-join.py [] となりました.data_listにも入ってないようです。 パターン2のような結果が得たいので、axisは0にしました.
melian

2022/06/09 05:02

以下の様に変更してみるどうなりますか? csv_files = glob.glob('C:\\Users\\wa753\\*.csv')
75na

2022/06/09 05:47

ありがとうございます!やってみたのですが、同じエラーが出てしまいました、、
melian

2022/06/09 05:51

そうなりますと、CSV ファイルは C:\Users\Documents\ にあるということでしょうか?
75na

2022/06/09 05:55

あ!そうかもしれません! パスを間違えていました、、無事に結合できました!ありがとうございます! ちなみに、最初のものが上手くできなかったのは、閲覧する?フォルダが指定されていなかったからでしょうか?
melian

2022/06/09 06:09

はい、python を実行したフォルダが C:\Users\wa753 なので、glob.glob("*.csv") とすると C:\Users\wa753 にある "*.csv" ファイルを探すことになります。
75na

2022/06/09 07:30

ありがとうございます!
guest

回答1

0

私の方でコードを動かしてみましたが、正常に動作しました。
恐らくですが、ディレクトリ構成が問題ではないでしょうか?

仮に、このコードのファイルを「test.py」
元ファイル①とされていたファイルを「ABC.csv」
元ファイル②とされていたファイルを「DEF.csv」
とします。

この時のディレクトリ構成としては、test.pyと同じディレクトリ階層にABC.csvとDEF.csvが無いといけません。

次に結合後の結果ですが、このままではファイルの先頭文字がカラム名となるので、以下のようになってしまいます。(AとDはカラム名)

AD
B
C
E
F

解決法としては、先頭行をカラムにしないために以下の行を修正します。

python

1#修正前 2for i in csv_files: 3 data_list.append(pd.read_csv(i)) 4 5#修正後 6for i in csv_files: 7 data_list.append(pd.read_csv(i, header=None))

これによって得られる結果は、質問者さんのパターン②の結果になります。

投稿2022/06/09 05:17

編集2022/06/09 13:01
tasojiro

総合スコア16

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

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

75na

2022/06/09 05:58

ありがとうございます!他の方のアドバイスも参考にして無事、結合することができました!形式もばっちりです!本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問