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

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

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

    2. pandas GROUPBY+变换和多列

      Pandas groupby + transform and multiple columns( pandas GROUPBY+变换和多列)

        <tbody id='x47sJ'></tbody>
        • <legend id='x47sJ'><style id='x47sJ'><dir id='x47sJ'><q id='x47sJ'></q></dir></style></legend>
            <bdo id='x47sJ'></bdo><ul id='x47sJ'></ul>
              <tfoot id='x47sJ'></tfoot>

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

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

                本文介绍了 pandas GROUPBY+变换和多列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                若要获得对与原始DataFrame(相同观测计数)相同详细级别的Groupby数据执行的结果,我使用了Transform函数。

                示例: 原始数据帧

                name, year, grade
                Jack, 2010, 6
                Jack, 2011, 7
                Rosie, 2010, 7
                Rosie, 2011, 8
                

                GROUPBY转换后

                name, year, grade, average grade
                Jack, 2010, 6, 6.5
                Jack, 2011, 7, 6.5
                Rosie, 2010, 7, 7.5
                Rosie, 2011, 8, 7.5
                
                但是,随着基于多列的更高级函数的出现,事情变得更加复杂。令我困惑的是,我似乎无法访问分组转换组合中的多个列。

                df = pd.DataFrame({'a':[1,2,3,4,5,6],
                               'b':[1,2,3,4,5,6],
                               'c':['q', 'q', 'q', 'q', 'w', 'w'],  
                               'd':['z','z','z','o','o','o']})
                
                def f(x):
                 y=sum(x['a'])+sum(x['b'])
                 return(y)
                
                df['e'] = df.groupby(['c','d']).transform(f)
                

                给我:

                KeyError: ('a', 'occurred at index a')
                

                虽然我知道以下方法确实有效:

                df.groupby(['c','d']).apply(f)
                

                导致此行为的原因以及如何获得以下内容:

                a   b   c   d   e
                1   1   q   z   12
                2   2   q   z   12
                3   3   q   z   12
                4   4   q   o   8
                5   5   w   o   22
                6   6   w   o   22
                

                推荐答案

                对于此特定情况,您可以执行以下操作:

                g = df.groupby(['c', 'd'])
                
                df['e'] = g.a.transform('sum') + g.b.transform('sum')
                
                df
                # outputs
                
                   a  b  c  d   e
                0  1  1  q  z  12
                1  2  2  q  z  12
                2  3  3  q  z  12
                3  4  4  q  o   8
                4  5  5  w  o  22
                5  6  6  w  o  22
                

                如果您可以通过同一Groupby上的独立转换的线性组合来构造最终结果,则此方法将起作用。

                否则,您将使用groupby-apply,然后合并回原始DF。

                示例:

                _ = df.groupby(['c','d']).apply(lambda x: sum(x.a+x.b)).rename('e').reset_index()
                df.merge(_, on=['c','d'])
                # same output as above.
                

                这篇关于 pandas GROUPBY+变换和多列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
                Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
                Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)
                Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
                Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
                Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)

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

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