【问题标题】:Subset and split a dataframe into multiple dataframes based on two columns基于两列将数据帧子集并拆分为多个数据帧
【发布时间】:2019-08-13 01:12:26
【问题描述】:

我有一个巨大的数据框如下:(我刚刚放了一个只有 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

我正在寻找的是基于两列“计划”和“标志”基于这些列中的元素组将数据框拆分为多个数据框。我需要它,因为基于此,我将提供这些数据帧以进行其他处理。

因此,我希望数据框在拆分时看起来像:

  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)

很遗憾,我无法以我想要的格式在输出中恢复数据帧。事实上,我将键(组)作为我从未想要的列。我想保留相同的数据框,但根据我上面提到的两列分成子组。

任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas subset pandas-groupby


    【解决方案1】:

    尝试使用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
    

    【讨论】:

    • 太棒了!谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 2022-01-07
    • 2013-11-16
    相关资源
    最近更新 更多