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

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

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

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

Q&A

解決済

3回答

1307閲覧

python Pandas 複数データフレームのFOR文ループについて

icemanstanding

総合スコア73

pandas

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

0グッド

0クリップ

投稿2022/06/07 06:04

データフレームを使用するfor文を
2重のfor文にして、プログラムを短くしたいのですが、
初心者なので対応がわかりません。
どなたかアドバイスをお願いします。

■出来てる事

col=[0,1,2,3] for i in col: df1[i]=XXXXXXXXXX

■困っている事
df1・・・・・・・・df100まであるので、2重for分にしたい。

■やりたい事のイメージ

col1=[0,1,2,3] col2=[0,1,2,,,,,,,,100] for i in col1:  for j in col2: df[j,i]=XXXXXXXXXX

■やってみた事
Panelを初めて書いてみましたが、エラーが出て使えませんでした。

for i in col1 df=df[i] for j in col2 panel = pd.Panel({'df': df}) panel['j'] = j

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

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

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

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

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

guest

回答3

0

自己解決

ご教授ありがとうございます。
これでできました。

今度は dfb1['j']・・・・・・dfb100['j']
をグラフにするのに悩んでますが・・・・

i_old=0 k=0 for j in col2: for i in col1: dfa=df1[df1['set']<=i] dfa=dfa[dfa['set']>i_old] dfa=dfa[dfa[j]!=0] exec("dfb"+ str(k) + "= dfa") i_old=i k=k+1

投稿2022/06/07 08:45

icemanstanding

総合スコア73

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

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

0

※ df1 から df100 まで並べるのは大変でしょうけれども

python

1import pandas as pd 2import numpy as np 3 4# generate dataframes for test 5df1 = pd.DataFrame(np.full((10, 6), 1)) 6df2 = df1.copy() 7df3 = df1.copy() 8df4 = df1.copy() 9df5 = df1.copy() 10 11# 12#for df in [globals()[f'df{i}'] for i in range(1, 6)]: 13for df in [df1, df2, df3, df4, df5]: 14 df[df.columns[:4]] = 'XXXXXXX'

投稿2022/06/07 07:39

melian

総合スコア19747

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

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

0

df1,...df100をリストにまとめて、リストをループして処理することができます。
また、0~3列まで全行に同じ値をセットするなら.ilocで一括セットすることもできます。
なお、そもそもですが、df100個を別変数で管理するのではなく、最初からリストなりで管理したほうがよいです。

Python

1import pandas as pd 2 3df1 = pd.DataFrame([[1,2,3,4],[5,6,7,8]]) 4df2 = pd.DataFrame([[1,2,3,4],[5,6,7,8]]) 5df3 = pd.DataFrame([[1,2,3,4],[5,6,7,8]]) 6 7dfs = [df1,df2,df3] 8 9col=[0,1,2,3] 10for i, df in enumerate(dfs): 11 12 # 列毎にループしてもいいが 13 #for c in col: 14 # df[c] = 9 15 16 # 以下のように一括でセットすることもできる 17 df.iloc[:,col] = 9 18 19 dfs[i] = df # 元データに反映 20 21print(df1) 22print(df2) 23print(df3) 24# 0 1 2 3 25#0 9 9 9 9 26#1 9 9 9 9

投稿2022/06/07 06:33

can110

総合スコア38262

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問