基于两列将一个数据帧子集并拆分为多个数据帧

2024-07-01 07:59:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的数据框,如下所示:(我刚刚把一个代表性的数据框样本放在只有10行的地方。但是,即使对于10000行,数据模式也将保持不变。)

  Input:

     df =

             unique_id  target  value  response scan  plan  filter flag

                CTA15   21.00   19.0      25.7   T1  TROY       1  f1a
                CTA15   21.00   22.0      22.9   T2  TROY       1  f1a
                CTA15   21.00   28.0      36.0   T2  TROY       0  f1b
                CTA15   21.00   18.0       7.0   T3  TROY       1   f2
                CTA15   21.00   22.4      32.4   T3  TROY       1   be
                AC007    1.80    2.0      28.9   E1  TROY       0   be
                 BGD1    0.89    1.6      14.6  TT1  VICT       1   f1a
                 GHB   56.80   51.0      11.0  YU1   VICT       1   f1b
                 GHB   56.80   54.0      84.9  YU1   VICT       1   f2
                 GHB   56.80    4.7      48.7  YU6   VICT       1   be

我想要的是基于两列“plan”和“flag”将数据框拆分为多个数据框,这两列是基于这些列中的元素组的。我需要它,因为基于此,我将为其他处理提供这些数据帧。你知道吗

因此,我希望拆分时的数据帧如下所示:

  Output:

        df1 =

             unique_id  target  value  response scan  plan  filter flag

                CTA15   21.00   19.0      25.7   T1  TROY       1  f1a
                CTA15   21.00   22.0      22.9   T2  TROY       1  f1a

       df2 =

             unique_id  target  value  response scan  plan  filter flag

                CTA15   21.00   28.0      36.0   T2  TROY       0  f1b

       df3 =

             unique_id  target  value  response scan  plan  filter flag

                CTA15   21.00   18.0       7.0   T3  TROY       1   f2

      df4 =

             unique_id  target  value  response scan  plan  filter flag

                CTA15   21.00   22.4      32.4   T3  TROY       1   be
                AC007    1.80    2.0      28.9   E1  TROY       0   be


        df5 =

             unique_id  target  value  response scan  plan  filter flag

                 BGD1    0.89    1.6      14.6  TT1  VICT       1   f1a

        df6 =

             unique_id  target  value  response scan  plan  filter flag

                 GHB   56.80   51.0      11.0  YU1   VICT       1   f1b
       df7 =

             unique_id  target  value  response scan  plan  filter flag

                  GHB   56.80   54.0      84.9  YU1   VICT       1   f2

       df8 =

             unique_id  target  value  response scan  plan  filter flag

                 GHB   56.80    4.7      48.7  YU6   VICT       1   be

我试着根据以下两个组创建词典:

      grCols = ['plan', 'flag']

      mydict = dict(tuple(df.groupby(grCols)))

      dfnew = pd.DataFrame().append(mydict, ignore_index=True)

不幸的是,我无法恢复输出中所需格式的数据帧。事实上,我得到的键(组)列,我从来没有想要的。我希望保持相同的数据帧,但根据上面提到的两列将其拆分为子组。你知道吗

任何帮助都将不胜感激!你知道吗


Tags: 数据idtargetscanvalueresponsebefilter
1条回答
网友
1楼 · 发布于 2024-07-01 07:59:58

尝试使用groupby

d={i:  y for i , (x , y) in enumerate(df.groupby(grCols))}

d[0]
  unique_id  target  value  response scan  plan  filter flag
4     CTA15    21.0   22.4      32.4   T3  TROY       1   be
5     AC007     1.8    2.0      28.9   E1  TROY       0   be

相关问题 更多 >

    热门问题