以下のdataframe(実際には100行以上ある)に対し、ID(AAA100,BBB200など)で文字列検索をかけ、各IDに対応した5種の新しいdataframe(df_AAA100,df_BBB200,... の5種)に入れたいです(※期待されるアウトプット)。
import pandas as pd list = [ [1, 100, 0.33, 'AAA', 'AAA100'], [2, 200, 0.67, 'BBB', 'BBB200'], [3, 300, 1, 'CCC', 'CCC300'], [4, 400, 1.33, 'DDD', 'DDD400'], [5, 500, 1.67, 'EEE', 'EEE500'], [6, 600, 2, 'FFF', 'FFF600']] df = pd.DataFrame(list) df.index = ['row0','row1','row2','row3','row4','row5'] print(df) # c00 c01 c02 c03 c04 #0 1 100 0.33 AAA AAA100 #1 2 200 0.67 BBB BBB200 #2 3 300 1.00 CCC CCC300 #3 4 400 1.33 DDD DDD400 #4 5 500 1.67 EEE EEE500 #5 6 600 2.00 FFF FFF600 コード
※期待されるアウトプット
下記dataframeはdf_AAA100 = df[df["c04"] == "AAA100"]のように、それぞれでスクリプトを書けば
作成されると思いますが、for文で数行でまとめて実行することはできませんでしょうか。
print(df_AAA100) # 0 1 2 3 4 #0 1 100 0.33 AAA AAA100 print(df_BBB200) # 0 1 2 3 4 #0 2 200 0.67 BBB BBB200 print(df_CCC300) # 0 1 2 3 4 #0 3 300 1.00 CCC CCC300 print(df_DDD400) # 0 1 2 3 4 #0 4 400 1.33 DDD DDD400 print(df_EEE500) # 0 1 2 3 4 #0 5 500 1.67 EEE EEE500 print(df_FFF600) # 0 1 2 3 4 #0 6 600 2.00 FFF FFF600 コード
コードは「コードの挿入」で記入してください。
この場合で言うと、右から2列目と左から2列目の値を結合して
一番右の列に挿入したいという意図であっていますでしょうか?
いえ、検索文字列に応じて各行を丸丸抽出して、各新規dataframe(df_AAA100,df_BBB200,... )の5種に挿入したいということになります。説明が下手で申し訳ありません。
うーん、まだわからないです。。
ごめんなさい。
上記のlistの値以外に別の値の例があればわかるのかな??
やりたいことは、グループ化とはまた別の処理ですか?
IDとは、一番右の列ですか?2列目、4列目は、気にしなくて良いですか?
IDは同じものが複数回出てくるのですか?
各IDごとのデータフレームは、元のデータフレームを単純に行抽出したもので良いですか?
※期待されるアウトプットについて、追加いたしました。
IDは一番右の列です。2列目、4列目は検索に関係してきません。IDは実際は同じものが複数回現れます。元のデータフレームを行抽出したいです。

回答2件
あなたの回答
tips
プレビュー