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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

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

Python

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

pandas

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

Q&A

解決済

1回答

460閲覧

forループ処理内で変数を使ったcsv読み込み

revoiot

総合スコア188

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

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

Python

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

pandas

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

0グッド

0クリップ

投稿2022/04/05 02:18

編集2022/04/05 02:20

実現したいこと

・下記ディレクトリ構造で、会員番号のフォルダごとに格納されているスマートウォッチのデータに対して、Pythonのループ処理で会員番号の列を追加したい。

ソースコード内の#4でCSVを読み込ませたデータフレームに対して列追加の処理を実行したいのですが、
ループ処理内でcsvの読み込みができず、ループ処理内ではデータフレームの中身を確認しても何も表示されない状況です。
ループ内で処理を実行させるにあたって、ソースコードのどの部分の修正が必要でしょうか?
ご存じの方いましたらご教示いただけると幸いです。

#4でループの内で確認
print(glob.glob(i+ "/ACTIVITY/*.csv")[0])
出力結果→ 表示されない

#5でループの外で確認
print(i)
出力結果→ まとめフォルダ/A

print(glob.glob(i + "/ACTIVITY/*.csv")[0])
出力結果→ まとめフォルダ/A/ACTIVITY/ACTIVITY_XXXXXX.csv

前提

使用ツール等

  • Python 3.9.7
  • Jupternotebook
  • MacOS

ディレクトリ構造

まとめフォルダ①会員番号フォルダ②データ格納用フォルダ③CSVファイル
まとめフォルダAACTIVITYACTIVITY_XXXXXX.csv
SLEEPSLEEP_XXXXXX.csv
HEARTRATEHEARTRATE_XXXXXX.csv
BACTIVITYACTIVITY_XXXXXX.csv
SLEEPSLEEP_XXXXXX.csv
HEARTRATEHEARTRATE_XXXXXX.csv
CACTIVITYACTIVITY_XXXXXX.csv
SLEEPSLEEP_XXXXXX.csv
HEARTRATEHEARTRATE_XXXXXX.csv

該当のソースコード

python

1from pathlib import Path 2import pandas as pd 3import glob 4import os 5 6#1 まとめフォルダ配下の会員番号フォルダ②のパス一覧を取得 7DIR = glob.glob('まとめフォルダ/*') 8 9#2 会員番号を格納するための空配列を用意 10MEMBER = [] 11 12#3 会員番号フォルダ②のパス一覧からフォルダ名のみを抜き出し、用意した空配列に会員番号を入れていく。 13for i in DIR: 14 MEMBER.append(os.path.split(i)[1]) 15 16#4 会員番号ごと、データ種類ごと(ACTIVITY,SLEEPなど)に、会員番号の列追加の処理を実行する。 17for i in glob.glob("MEMBER"): 18 df_ACTIVITY = pd.read_csv((glob.glob(i+ "/ACTIVITY/*.csv")[0]), encoding='utf-8') 19 df_ACTIVITY["会員番号"] = MEMBER 20 print(df_ACTIVITY) 21 print(glob.glob(i+ "/ACTIVITY/*.csv")[0]) 22 23 df_SLEEP = pd.read_csv((glob.glob(i+ "/SLEEP/*.csv")[0]), encoding='utf-8') 24 df_SLEEP["会員番号"] = MEMBER 25 print(df_SLEEP) 26 print(glob.glob(i+ "/SLEEP/*.csv")[0]) 27 28#5 データフレームの中身を確認。 29print(df_ACTIVITY) 30print(df_SLEEP)

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

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

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

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

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

meg_

2022/04/05 02:27

> for i in glob.glob("MEMBER"): 上記は何をしているコードか説明できますか?(おそらくこのループは実行されていないかと思われます)
guest

回答1

0

ベストアンサー

MENBERという変数の扱いがおかしくなっています。

python

1MEMBER = [] 2for i in DIR: 3 MEMBER.append(os.path.split(i)[1]) 4 5for i in glob.glob("MEMBER"):

MEMBERはリストで、そこに会員番号フォルダの名前を追加しているのですよね。
ところがループで「"MEMBER"」のように文字列としてglobしてしまっています。

python

1for i in MEMBER:

とすべきでしょう。

また、 処理の途中にある「df_ACTIVITY["会員番号"] = MEMBER」も意味が不明です。ここもたぶん「df_ACTIVITY["会員番号"] = i」とすべきでしょう。

投稿2022/04/05 11:32

TakaiY

総合スコア12765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問