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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

479閲覧

【Python3】カラムのないcsvファイルを結合させたい

Sarada

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/02/15 10:11

実現したいこと

Pythonを使って、複数のcsvファイルを一つにまとめたいです。
カラム名を追加したいです。

前提

・csvファイルが複数あり、これらを1ファイルにまとめたいです。
・生データにはカラム名が入っていません。
・csvファイルの中身がないものも存在しています。

csvの生データは以下のようになっています。
"A",2023-02-15 18:57:47.000000,"B"
"A",2023-02-15 19:57:47.000000,"C"
"A",2023-02-15 20:57:47.000000,"C"
"A",2023-02-15 20:58:47.000000,"B"
"A",2023-02-15 21:57:47.000000,"C"
"A",2023-02-15 20:58:47.000000,"B"
"A",2023-02-15 20:59:47.000000,"B"

最終的にはここにカラム名も追加した、以下のようなtotal.csvを作成したいです。
AAA,Time,BBB
A,2023-02-15 18:57:47.000000,B
A,2023-02-15 19:57:47.000000,C
A,2023-02-15 20:57:47.000000,C
A,2023-02-15 20:58:47.000000,B
A,2023-02-15 21:57:47.000000,C
A,2023-02-15 20:58:47.000000,B
A,2023-02-15 20:59:47.000000,B

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

エラーメッセージなどはないんですが、生成されるcsvがおかしなことになってしまいます。
また、カラム名も追加できていません。

回答宜しくお願い致します。

該当のソースコード

python

1import pandas as pd 2import glob 3import os 4 5csv_files = glob.glob('./csvfiles/*.csv') 6 7list = [] 8for file in csv_files: 9 if os.stat(file).st_size != 0: #この部分でcsvファイルの中が存在するかどうかを判定しています。 10 list.append(pd.read_csv(file)) 11 df = pd.concat(list) 12 df.to_csv('./total.csv', index = False)

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

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

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

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

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

guest

回答2

0

結合と出力をする場所がまちがえているのでしょう。
for文で全部リストにまとめ終ったあとに、結合して出力すればいいかと。

python

1for file in csv_files: 2 if os.stat(file).st_size != 0: #この部分でcsvファイルの中が存在するかどうかを判定しています。 3 list.append(pd.read_csv(file)) 4df = pd.concat(list) 5df.to_csv('./total.csv', index = False)

また、カラム名を付けるのであれば、

python

1df.columns = ['AAA','Time','BBB']

のように追加できますね。

投稿2023/02/15 10:31

編集2023/02/15 10:36
TakaiY

総合スコア12765

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

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

0

ベストアンサー

python

1import pandas as pd 2import glob 3import os 4 5csv_files = glob.glob('./csvfiles/*.csv') 6 7dfs = [] 8for file in csv_files: 9 if os.stat(file).st_size > 0: 10 dfs.append(pd.read_csv(file, header=None)) 11 12df = pd.concat(dfs) 13df.columns = ['AAA', 'Time', 'BBB'] 14df.to_csv('./total.csv', index = False)

投稿2023/02/15 10:28

melian

総合スコア19798

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問