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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

657閲覧

ファイル名を1列目に追加する方法

KYuki1218

総合スコア26

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2023/03/27 09:53

発生している問題

csvに結果を出力する際に,上から番号を付ける方法を1つ前のQ&Aで教えていただきました(melian様,下記のように以前から現在へ修正する方法をご教示いただきありがとうございました)。しかし,ファイル名と列名が一致せず,例えば,ID001が80列目に出力される等の現象が生じております。実現したいことで記載しているように,(1)ファイル名を1列目に追加するもしくは(2)for文で出力される際のルールをご教示いただけますと幸いです。可能であれば,フォルダ内のIDは連番ではないため(実現したいことのようにID003がない等),前者(1)の解決策であると嬉しいです。

<以前>

1回目2回目3回目
323545
I587260

<現在>

ID1回目2回目3回目
1323545
2587260
3

実現したいこと

ID1回目2回目3回目
ID001323545
ID002587260
ID004

該当のソースコード

python

1import glob 2import pandas as pd 3import csv 4 5path = 'パス名' 6files = glob.glob(path) 7 8data = [["ID", "1回目","2回目","3回目"]] 9 10for i, file in enumerate(files, start=1): 11 df = pd.read_csv(file) 12 13#中略(angle1から3を定義) 14 15 data.append([i, angle1,angle2,angle3]) 16 17 with open("result.csv", "w", newline="") as f: 18 writer = csv.writer(f) 19 writer.writerows(data)

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

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

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

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

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

TakaiY

2023/03/27 10:00

IDの列に入る値が連番でないとしたら、「ID001」はどのような基準で付与されるのですか? たとえば、 3行目はなぜ「ID004」なのですか?
KYuki1218

2023/03/27 10:08

ご質問ありがとうございます。 元々連番で150ファイル(ID001〜ID150)あったのですが,不適切なファイルを30個ほど削除した経緯がございます。そのため,ID001,ID002,ID004,ID005,ID006…のように中抜けしているファイル名がございます。解析時に支障が出るようであれば,後半のファイル名を前半に名称変更することも可能です(例えば,150個目(ID150)を3個目(ID003)に修正)。
guest

回答1

0

ベストアンサー

IDに入れたいのがファイル名だとしたら以下でどうですか?

python

1for i, file in enumerate(files, start=1): 2 df = pd.read_csv(file) 3 4#中略(angle1から3を定義) 5 6 data.append([file, angle1,angle2,angle3]) 7 8with open("result.csv", "w", newline="") as f: 9 writer = csv.writer(f) 10 writer.writerows(data)

fileに入っている文字列から必要な部分だけ取り出す必要があるのであれば、os.pathや pathlib.Pathや、文字列の操作を行なえばいいでしょう。

投稿2023/03/27 10:04

TakaiY

総合スコア12726

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

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

KYuki1218

2023/03/27 10:13

TakaiY様,迅速にご教示いただきありがとうございます。解決致しました。 なかなか解決せずに進まないでいたことであるため,非常に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問