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

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

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

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

Q&A

0回答

2845閲覧

複数のCSVファイルにヘッダーを追加、修正しそれぞれ個別に保存

toikouya

総合スコア5

CSV

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

0グッド

0クリップ

投稿2020/01/17 08:30

編集2020/01/17 12:26

前提・実現したいこと

目的:フォルダ内の大量のcsvファイルを読み込み、
個々のファイルにそれぞれヘッダーを作成したうえで名付けて保存。
別のプログラム(この質問では関係ありません)でのグラフ化を簡単にする

このプログラムでは、複数のCSVファイルを一つにまとめてしまっている(pd.concat)ため、
複数のファイルに分けて保存したい。

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

イメージ説明
イメージ説明

このようにして元のCSVファイルのデータの誤認識を修正しています。 print(df) print(df['time'].str.split(',', expand=True)) df2 = pd.concat([df, df['time'].str.split(',', expand=True)], axis=1).drop('time', axis=1) print(df2) df3 = pd.concat([df['date'], df['time'].str.split(',', expand=True)], axis=1) print(df3) df3.rename(columns={0: 'time', 1: 'light',2:'temperature',3:'humidity',4:'soilmoisture'}, inplace=True) print(df3) #ここまで挿入画像の部分のプログラム ------------------------------------------------------------------------------------------------------------------------------ ### 該当のソースコード import glob import pandas as pd import os # ファイル読み込み files = glob.glob('L:\AMANI DATA 0114/*.csv') # ファイルを読み込んでデータフレーム作成 df = pd.concat( (pd.read_csv(f, header=None, # ファイルを読み込む.読み込む際にHeader名は無視する names=('date','time','light','temperature','humidity','soilmoisture'), # Headerの名前を決める dtype={'date':'str','time':'str','light':'str','temperature':'str','humidity':'str','soilmoisture':'str'}) # データの型を定義 for f in files)) # ファイルを連続で読み込む print(df) print(df['time'].str.split(',', expand=True)) df2 = pd.concat([df, df['time'].str.split(',', expand=True)], axis=1).drop('time', axis=1) print(df2) df3 = pd.concat([df['date'], df['time'].str.split(',', expand=True)], axis=1) print(df3) df3.rename(columns={0: 'time', 1: 'light',2:'temperature',3:'humidity',4:'soilmoisture'}, inplace=True) print(df3) #df3.to_csv(filename , sep=',',header=None ,index=None) #グループ化したCSVデータの書き出し(区切文字は','としています。)

試したこと

個々のファイルごとに読み込み、データフレーム化をしようと試みましたが
反応がありません。
イメージ説明

コード import pandas as pd import glob import os DATA_DIR='./data' files = glob.glob(os.path.join(DATA_DIR,'*.csv')) df_list=[] for file in files: tmp_df = pd.read_csv(file, header=None, names=('date','time','light','temperature','humidity','soilmoisture'), # Headerの名前を決める dtype={'date':'str','time':'str','light':'str','temperature':'str','humidity':'str','soilmoisture':'str'},encoding="sjis") # データの型を定義 tmp_df['filename'] = os.path.basename(file) df_list.append(tmp_df) df = pd(df_list, ignore_index=True) print(df) print(df['time'].str.split(',', expand=True)) df2 = pd.concat([df, df['time'].str.split(',', expand=True)], axis=1).drop('time', axis=1) print(df2) df3 = pd.concat([df['date'], df['time'].str.split(',', expand=True)], axis=1) print(df3) df3.rename(columns={0: 'time', 1: 'light',2:'temperature',3:'humidity',4:'soilmoisture'}, inplace=True) print(df3) filename = '*.csv/'+ date.replace('/','') + '.csv'              df3.to_csv(filename, sep=',',header=None ,index=None)

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
Visual studio code
バージョン: 1.41.1 (user setup)
コミット: 26076a4de974ead31f97692a0d32f90d735645c0

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

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

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

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

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

y_waiwai

2020/01/17 08:32

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
toikouya

2020/01/17 08:46

修正しました。ご指摘ありがとうございます。
meg_

2020/01/17 10:36

・「バージョン: 1.41.1 (user setup)」これは何のバージョンですか? ・「個々のファイルごとに読み込み、データフレーム化をしようと試みましたが反応がありません。」とはどういうことですか? 画像を見るとSyntaxエラーが出ているようですが。
toikouya

2020/01/17 12:26

そのエラーはすでに解決させたものです。混入させてしまい、申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問