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

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

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

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

441閲覧

forループ処理(イテレーション)でデータフレームを更新したい

sou10

総合スコア4

Python 3.x

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/08/13 14:15

編集2020/08/13 17:01

前提

worksheets_dflistにはworksheet_dfが配列に入っており、

0 date ... file_name
1 2020-06-22 ... drive/contents/nat/625
2 2020-06-23 ... drive/contents/nat/625
3 2020-06-24 ... drive/contents/nat/625
4 2020-06-25 ... drive/contents/nat/625

[4 rows x 7 columns], 0 date ... file_name
1 2020-06-26 ... drive/contents/haru/628
2 2020-06-27 ... drive/contents/haru/628
3 2020-06-28 ...
(以下略)

worksheet_dfの場合は以下
0 date ... file_name
1 2020-06-22 ... drive/contents/nat/625
2 2020-06-23 ... drive/contents/nat/625
3 2020-06-24 ... drive/contents/nat/625
4 2020-06-25 ... drive/contents/nat/625

file_nameには各カラムの値から文字列を抽出して結合したものが入っています。
カラムはdate,id,name,dir,flag,file_nameのような形で、file_nameは

file_name = i[4]+i[3]+'/'+i[1]+'/'+i[6][48:]

で文字列を作成して、カラムに入れてあります。

それをworksheets_dflistに更新したいのですが、ループが上手くいかず、
worksheet_dfにはfile_nameが上記のようにループ最終時点での値で更新されてしまいます。

実現したいこと

0 date ... file_name 1 2020-06-22 ... drive/contents/nat/622 2 2020-06-23 ... drive/contents/nat/623 3 2020-06-24 ... drive/contents/nat/624 4 2020-06-25 ... drive/contents/nat/625 [4 rows x 7 columns], 0 date ... file_name 1 2020-06-26 ... drive/contents/haru/626 2 2020-06-27 ... drive/contents/haru/627 3 2020-06-28 ... drive/contents/haru/628 (以下略)

このようにループを正しい形で回したいです。
今の状態だと、全て同じ値で入ってきてしまい、ループが機能していない状態です。

下記が試したコードになります。

該当のソースコード

python

1file_name_list = [] 2for worksheet_df in worksheets_dflist: 3 for i in worksheet_df.itertuples(): 4 file_name = i[4]+i[3]+'/'+i[1]+'/'+i[6][48:] 5 file_name_list.append(file_name) 6 for i in file_name_list: 7 worksheet_df.at[worksheet_df.index, 'file_name'] = ??

すごく初歩的な質問なんだと思うのですが、どうしても詰まってしまいました。
知恵をお貸しいただけたら幸いです。
分かりにくくてすみません、追記いたしました。

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

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

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

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

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

meg_

2020/08/13 16:44

worksheets_dflistの内容を質問に追記してください。(やりたいことがコードから判りません)
meg_

2020/08/14 12:03

worksheets_dflistはデータフレームの入ったリストかなんかなんですね。 worksheet_dfをworksheet_df.head()した結果を見せてください。(全てのカラムが見たいです。カラム数が多い場合はfile_nameの作成に必要なものだけでも可) 念のため、worksheet_df.dtypesの結果も見せてください。(こちらもカラム数が多い場合はfile_nameの作成に必要なものだけでも可) file_nameの末尾の「622」とかは月+日付の数字なんですよね?
guest

回答1

0

外側のfor文と、内側のfor文両方に変数iを使用しているからなのではないでしょうか

投稿2020/08/13 14:24

Luke02561

総合スコア404

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

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

sou10

2020/08/13 14:43

変えてみたりもしたのですが、何か根本が違ってるようで悩んでます・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問