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

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

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

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

Q&A

解決済

1回答

985閲覧

pythonでフルパス名からファイル名を取り出す方法

momon1106

総合スコア1

Python 3.x

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

0グッド

0クリップ

投稿2021/11/19 02:17

編集2021/11/19 03:13

フルパス名が、1列になっているエクセルファイルがあります

この隣の列にファイル名をとり出した列を追加したいと思います

DataFrameの扱い方について調べたのですが解決に至りませんでした…

こちらでやったことですが
input_sheet_df = input_book.parse(ファイル名, 行数)
idx = input_sheet_df.astype(str).str.rfind('')

というところまでやってファイル名が始まるところをもとめました。 printすると文字位置がとれているのはわかりました。
ここで、まず情報を表示したい と考えて以下を試しています。

strings_data = input_sheet_df[idx+1:]
print(strings_data)

「DataFrameの使い方がわかっていない」という話でしょうか。 うまくググることもできずはまってしまったので質問をさせ
て頂いています。 すみませんがよろしくおねがいします。

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

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

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

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

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

momon1106

2021/11/19 02:34

失礼しました。 こちらでやったことですが input_sheet_df = input_book.parse(ファイル名, 行数) idx = input_sheet_df.astype(str).str.rfind('\\') というところまでやってファイル名が始まるところをもとめました。 printすると文字位置がとれているのはわかったので、まず情報を表示したい と考えて以下を試しています。 strings_data = input_sheet_df[idx+1:] print(strings_data) 「DataFrameの使い方がわかっていない」という話でしょうか。 うまくググることもできずはまってしまったので質問をさせて頂いています。 すみませんがよろしくおねがいします。
jbpb0

2021/11/19 03:22

> フルパス名が、1列になっているエクセルファイルがあります フルパスを一つPythonで読み込んだら、下記に書かれてるやり方でそこからファイル名部分を取り出せます https://note.nkmk.me/python-os-basename-dirname-split-splitext/ それをひたすら繰り返したらいいのではないですかね (フルパスを分解するところを、自分で頑張ってコード書かなくても)
momon1106

2021/11/19 06:08

丁寧なご指摘ありがとうございました。 「それをひたすら繰り返したらいいのではないですかね」というのを構えしまったというのはあるのですが、forで回しておけばという話ですね。。。教えて頂いたOS.pathではなく、pathlibを使っていますが以下のようにやりました for fullpath in input_sheet_df['検出ファイル名']: p_file = pathlib.Path(fullpath) p_file = p_file.name print(p_file) 今後ともよろしくおねがいします(内容は恥ずかしいですが全体のコメント宛にも書いておきます)
momon1106

2021/11/19 08:46

低評価は取り消していただけるのですね。ちょっと安心しました ^^; まぁ、聞いたようなやりかただと問題があったというのは認識した上で今後もお世話になりたいと考えています。 どうぞよろしくおねがいします。
guest

回答1

0

ベストアンサー

ファイル名などの文字列を扱うのであれば、pathlibを使うことをお勧めします。今回のような処理なら他にもやりかたはありますが、pythonでのpathの扱いを知っておくと今後も役にたつでしょう。

使いかたは公式ドキュメントでというところですが、検索すればいろいろ出てきます。ここあたりが目的に合うでしょうか。

投稿2021/11/19 03:03

TakaiY

総合スコア13792

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

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

momon1106

2021/11/19 03:25

ありがとうございます。 pathlibについてもできるようにしていきます。 ここで、質問の仕方に問題があったのかもしれませんが「エクセルのファイルを読み込んで「DataFrameとしてあつかうところ」がわかっていないのだとおもいます。 input_sheet_df = input_book.parse(ファイル名, 行数) idx = input_sheet_df.astype(str).str.rfind('\') strings_data = input_sheet_df[idx+1:] とすれば目的に近づけるのではないかと思ったのですが、これでは駄目なので すね。ググった結果「pandasで文字列と数値を相互変換、書式変更」という内 容は理解できたのですが、これをDataFrameの仕組みのなかで使う方法がわかっ ていません。 すみませんがよろしくおねがいします。
TakaiY

2021/11/19 05:34

DataFrameの操作や DataFrameについて一からというのは、ここで伝えられるようなものでも、伝えるようなものでも無いと思います。 公式のドキュメントや書籍や説明しているサイトなどを調べて習得する必要があります。 それでも、わからないところがあれば具体的にここで質問しましょう。 また、質問にあるような内容は、Excelのマクロでやるのがいちばん簡単です。そうしない理由は何ですか? pythonを使うのが目的ということであれば、pandasでなくて、openpyxl などのpythonからExcelを操作するモジュールの方がわかりやすいと思います。 DataFrameを使えるようになりたいということであれば、最初に書いたとおり、まずはDataFrameの操作そのものを習得するのが先でしょう。
momon1106

2021/11/19 06:13

このような質問に丁寧に回答頂きありがとうございました。 こちらのスタンスとしては「pythonが使ってみたいから」というのがスタート なのですが、ご指摘頂いたように丁寧にやってみます。 今後ともよろしくおねがいします。 追伸: 恥ずかしいので最後に書いていますが必要な情報は以下でとれています for fullpath in input_sheet_df['検出ファイル名']: p_file = pathlib.Path(fullpath) p_file = p_file.name print(p_file) お粗末さまでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問