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

      <legend id='K3fMS'><style id='K3fMS'><dir id='K3fMS'><q id='K3fMS'></q></dir></style></legend>

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

    2. <i id='K3fMS'><tr id='K3fMS'><dt id='K3fMS'><q id='K3fMS'><span id='K3fMS'><b id='K3fMS'><form id='K3fMS'><ins id='K3fMS'></ins><ul id='K3fMS'></ul><sub id='K3fMS'></sub></form><legend id='K3fMS'></legend><bdo id='K3fMS'><pre id='K3fMS'><center id='K3fMS'></center></pre></bdo></b><th id='K3fMS'></th></span></q></dt></tr></i><div id='K3fMS'><tfoot id='K3fMS'></tfoot><dl id='K3fMS'><fieldset id='K3fMS'></fieldset></dl></div>
      <tfoot id='K3fMS'></tfoot>
      1. pandas -按连续日期时间段分组

        时间:2024-08-22
        • <bdo id='8OQdB'></bdo><ul id='8OQdB'></ul>
            <tbody id='8OQdB'></tbody>
            <tfoot id='8OQdB'></tfoot>
            <i id='8OQdB'><tr id='8OQdB'><dt id='8OQdB'><q id='8OQdB'><span id='8OQdB'><b id='8OQdB'><form id='8OQdB'><ins id='8OQdB'></ins><ul id='8OQdB'></ul><sub id='8OQdB'></sub></form><legend id='8OQdB'></legend><bdo id='8OQdB'><pre id='8OQdB'><center id='8OQdB'></center></pre></bdo></b><th id='8OQdB'></th></span></q></dt></tr></i><div id='8OQdB'><tfoot id='8OQdB'></tfoot><dl id='8OQdB'><fieldset id='8OQdB'></fieldset></dl></div>
          • <legend id='8OQdB'><style id='8OQdB'><dir id='8OQdB'><q id='8OQdB'></q></dir></style></legend>

                1. <small id='8OQdB'></small><noframes id='8OQdB'>

                  本文介绍了 pandas -按连续日期时间段分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一个 pandas 数据帧,如下所示:

                      KEY   START       END         VALUE
                  0   A     2017-01-01  2017-01-16  2.1
                  1   B     2017-01-01  2017-01-23  4.3
                  2   B     2017-01-23  2017-02-10  1.7
                  3   A     2017-01-28  2017-02-02  4.2
                  4   A     2017-02-02  2017-03-01  0.8  
                  
                  我希望groupbyKEYsumVALUE上,但仅在连续的时间段上。例如,在上面的示例中,我希望获得:

                     KEY  START       END         VALUE 
                  0  A    2017-01-01  2017-01-16  2.1
                  1  A    2017-01-28  2017-03-01  5.0
                  2  B    2017-01-01  2017-02-10  6.0
                  
                  由于时间间隔,A有两个组。 我希望避免FOR循环,因为数据帧有数千万行。

                  推荐答案

                  按组比较shiftedSTART列创建帮助器Series并将其用于groupby

                  s = df.loc[df.groupby('KEY')['START'].shift(-1) == df['END'], 'END']
                  s = s.combine_first(df['START'])
                  print (s)
                  0   2017-01-01
                  1   2017-01-23
                  2   2017-01-23
                  3   2017-02-02
                  4   2017-02-02
                  Name: END, dtype: datetime64[ns]
                  
                  df = df.groupby(['KEY', s], as_index=False).agg({'START':'first','END':'last','VALUE':'sum'})
                  print (df)
                    KEY  VALUE      START        END
                  0   A    2.1 2017-01-01 2017-01-16
                  1   A    5.0 2017-01-28 2017-03-01
                  2   B    6.0 2017-01-01 2017-02-10
                  

                  这篇关于 pandas -按连续日期时间段分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:pandas -按两种功能分组 下一篇:pandas 分组并将行转换为多列

                  相关文章

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

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

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

                      <legend id='xzmT4'><style id='xzmT4'><dir id='xzmT4'><q id='xzmT4'></q></dir></style></legend>

                      <tfoot id='xzmT4'></tfoot>