<bdo id='y5ogt'></bdo><ul id='y5ogt'></ul>

      <i id='y5ogt'><tr id='y5ogt'><dt id='y5ogt'><q id='y5ogt'><span id='y5ogt'><b id='y5ogt'><form id='y5ogt'><ins id='y5ogt'></ins><ul id='y5ogt'></ul><sub id='y5ogt'></sub></form><legend id='y5ogt'></legend><bdo id='y5ogt'><pre id='y5ogt'><center id='y5ogt'></center></pre></bdo></b><th id='y5ogt'></th></span></q></dt></tr></i><div id='y5ogt'><tfoot id='y5ogt'></tfoot><dl id='y5ogt'><fieldset id='y5ogt'></fieldset></dl></div>

    1. <tfoot id='y5ogt'></tfoot>

      1. <small id='y5ogt'></small><noframes id='y5ogt'>

      2. <legend id='y5ogt'><style id='y5ogt'><dir id='y5ogt'><q id='y5ogt'></q></dir></style></legend>
      3. 如何按多列分组以在Pandas DataFrame中列出

        时间:2024-08-22
      4. <i id='46DkE'><tr id='46DkE'><dt id='46DkE'><q id='46DkE'><span id='46DkE'><b id='46DkE'><form id='46DkE'><ins id='46DkE'></ins><ul id='46DkE'></ul><sub id='46DkE'></sub></form><legend id='46DkE'></legend><bdo id='46DkE'><pre id='46DkE'><center id='46DkE'></center></pre></bdo></b><th id='46DkE'></th></span></q></dt></tr></i><div id='46DkE'><tfoot id='46DkE'></tfoot><dl id='46DkE'><fieldset id='46DkE'></fieldset></dl></div>

          • <small id='46DkE'></small><noframes id='46DkE'>

            1. <tfoot id='46DkE'></tfoot><legend id='46DkE'><style id='46DkE'><dir id='46DkE'><q id='46DkE'></q></dir></style></legend>
                  <bdo id='46DkE'></bdo><ul id='46DkE'></ul>

                    <tbody id='46DkE'></tbody>

                • 本文介绍了如何按多列分组以在Pandas DataFrame中列出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一个DataFramedf

                      A   B   C        date
                  O   4   5   5   2019-06-2
                  1   3   5   2   2019-06-2
                  2   3   2   1   2019-06-2
                  3   4   4   3   2019-06-3
                  4   5   4   6   2019-06-3
                  5   2   3   7   2019-06-3
                  

                  现在我可以使用以下代码按一列分组:

                  df.groupby('date')['A'].apply(list)
                  
                  
                           A         date
                  O   [4,3,3]   2019-06-2
                  1   [4,5,2]   2019-06-3
                  
                  但是,如果希望按多列分组,该怎么办呢?我试过这样的方法,但似乎不起作用:

                  df.groupby('date')[['A','B','C']].apply(list)
                  

                  最终的DataFrame应该如下所示:

                      A               B         C        date
                  O   [4,3,3]   [5,5,2]   [5,2,1]   2019-06-2
                  1   [4,5,2]   [4,4,3]   [3,6,7]   2019-06-3
                  

                  推荐答案

                  使用GroupBy.agg而不是GroupBy.apply

                  df1 = df.groupby('date')[['A','B','C']].agg(list).reset_index()
                  print (df1)
                          date          A          B          C
                  0  2019-06-2  [4, 3, 3]  [5, 5, 2]  [5, 2, 1]
                  1  2019-06-3  [4, 5, 2]  [4, 4, 3]  [3, 6, 7]
                  

                  编辑:如果要进行更多聚合,请在列表中传递:

                  df2 = df.groupby('date')[['A','B','C']].agg(['mean','min','max', list])
                  print (df2)
                                    A                            B                            C  
                                 mean min max       list      mean min max       list      mean   
                  date                                                                            
                  2019-06-2  3.333333   3   4  [4, 3, 3]  4.000000   2   5  [5, 5, 2]  2.666667   
                  2019-06-3  3.666667   2   5  [4, 5, 2]  3.666667   3   4  [4, 4, 3]  5.333333   
                  
                                                
                            min max       list  
                  date                          
                  2019-06-2   1   5  [5, 2, 1]  
                  2019-06-3   3   7  [3, 6, 7]  
                  

                  然后可以展平多索引列:

                  df2 = df.groupby('date')[['A','B','C']].agg(['mean','min','max', list])
                  df2.columns = df2.columns.map(lambda x: f'{x[0]}_{x[1]}')
                  df2 = df2.reset_index()
                  print (df2)
                          date    A_mean  A_min  A_max     A_list    B_mean  B_min  B_max  
                  0  2019-06-2  3.333333      3      4  [4, 3, 3]  4.000000      2      5   
                  1  2019-06-3  3.666667      2      5  [4, 5, 2]  3.666667      3      4   
                  
                        B_list    C_mean  C_min  C_max     C_list  
                  0  [5, 5, 2]  2.666667      1      5  [5, 2, 1]  
                  1  [4, 4, 3]  5.333333      3      7  [3, 6, 7]  
                  

                  这篇关于如何按多列分组以在Pandas DataFrame中列出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在图表中绘制 pandas 的分组值 下一篇:pandas GROUPBY+变换和多列

                  相关文章

                  <legend id='nw7zC'><style id='nw7zC'><dir id='nw7zC'><q id='nw7zC'></q></dir></style></legend>
                  <tfoot id='nw7zC'></tfoot>
                  1. <i id='nw7zC'><tr id='nw7zC'><dt id='nw7zC'><q id='nw7zC'><span id='nw7zC'><b id='nw7zC'><form id='nw7zC'><ins id='nw7zC'></ins><ul id='nw7zC'></ul><sub id='nw7zC'></sub></form><legend id='nw7zC'></legend><bdo id='nw7zC'><pre id='nw7zC'><center id='nw7zC'></center></pre></bdo></b><th id='nw7zC'></th></span></q></dt></tr></i><div id='nw7zC'><tfoot id='nw7zC'></tfoot><dl id='nw7zC'><fieldset id='nw7zC'></fieldset></dl></div>

                      • <bdo id='nw7zC'></bdo><ul id='nw7zC'></ul>

                      <small id='nw7zC'></small><noframes id='nw7zC'>