質問するログイン新規登録
Python 3.x

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

Q&A

解決済

1回答

1703閲覧

【python】concatとfor文を併用したい

cheriraoka

総合スコア42

Python 3.x

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

0グッド

0クリップ

投稿2023/04/11 13:37

0

0

実現したいこと

いつもお世話になっております。

次のコードをfor文を使用してきれいにまとめたいです。なお、rankはDataFrameです。

rank_21_30 = pd.concat([rank1,rank2,rank3,rank4,rank5,rank6,rank7,rank8,rank9,rank10,rank11,\ rank12,rank13,rank14,rank15,rank16,rank17,rank18,rank19,rank20,rank21,rank22])

試したこと

次のコードで実行してみましたがエラーが出てしまいます。

pd.concat(["rank{}".format(str(i).zfill(2)) for i in range(1,23,1)]) TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid

こちらのページ→https://teratail.com/questions/233357 に同じようなエラーが出ており、このページではDataFrameにしてくださいとあります。しかし、今回私がconcatしたいrankはすでにDataFrameであるため対応に困っています。

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

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

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

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

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

melian

2023/04/11 13:56

本来は rank1 〜 rank22 を作成する段階でリスト化する(ranks[0] 〜 ranks[21])方が望ましいのですが、locals() からデータフレームを拾ってくる方法があります。 ranks = locals() rank_21_30 = pd.concat([ranks[f'rank{i+1}'] for i in range(22)])
TakaiY

2023/04/11 15:34

上の質問と同内容ですが、そもそも rank1,rank2 などはどのように作っていますか?
cheriraoka

2023/04/12 03:32

関数を定義して作成しています。以下、コードです。 race_id_list = ['2021300414{}'.format(str(i).zfill(2)) for i in range(1, 13, 1)] race_date = race_id_list[0][:4] + '/' + race_id_list[0][6:8] + '/' + race_id_list[0][8:10] rank1 = add_rank(predict_time(str(race_date), race_id_list), str(race_date)) add_rankとpredicit_timeが関数になります。今現在はrace_id_listを個別に入れてrankに番号を付けていますが、ゆくゆくはrankもfor文などで回したいと考えています。
guest

回答1

0

ベストアンサー

rank1などを自分で作っているのであれば、

python

1rank = [] 2 # なんらかの繰り返し処理 3 rank.append(add_rank(predict_time(str(race_date), race_id_list), str(race_date)))

のように始めからrankをリストにして、

python

1rank_21_30 = pd.concat(rank)

とすればいいでしょう。

投稿2023/04/12 04:37

TakaiY

総合スコア14633

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

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

cheriraoka

2023/05/06 14:57

お礼が遅くなり申し訳ございません。おかげさまで実装できました。今後ともよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問