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

      <tfoot id='xUXJH'></tfoot>

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

        组内的 Cumsum 并在 pandas 的条件下重置

        时间:2023-08-30
        <tfoot id='guRHA'></tfoot>
            <tbody id='guRHA'></tbody>

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

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

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

                  本文介绍了组内的 Cumsum 并在 pandas 的条件下重置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  I have a dataframe with two columns ID and Activity. The activity is either 0 or 1. I want a new column containing a increasing number since the last activity was 1. However, the count should only be within one group (ID). If the activity is 1, the counting column should be reset to 0 and the count starts again.

                  So, I have a dataframe containing the following:

                  What is want is this:

                  Can someone help me?

                  解决方案

                  We using a new para 'G' here

                  df['G']=df.groupby('ID').Activeity.apply(lambda x :(x.diff().ne(0)&x==1)|x==1)
                  
                  df.groupby([df.ID,df.G.cumsum()]).G.apply(lambda x : (~x).cumsum())
                  
                  Out[713]: 
                  0     1
                  1     2
                  2     0
                  3     1
                  4     2
                  5     1
                  6     2
                  7     0
                  8     1
                  9     0
                  10    1
                  11    1
                  12    0
                  13    0
                  14    1
                  15    2
                  Name: G, dtype: int32
                  

                  Data input

                  df=pd.DataFrame({'ID':list('AAAAABBBBBBCCCCC'),'Activeity':[0,0,1,0,0,0,0,1,0,1,0,0,1,1,0,0]})
                  

                  Explanation :

                  Here we get the new para 'G'
                  df['G']=df.groupby('ID').Activeity.apply(lambda x :(x.diff().ne(0)&x==1)|x==1)
                  df
                  Out[134]: 
                      Activeity ID      G
                  0           0  A  False
                  1           0  A  False
                  2           1  A   True
                  3           0  A  False
                  4           0  A  False
                  5           0  B  False
                  6           0  B  False
                  7           1  B   True
                  8           0  B  False
                  9           1  B   True
                  10          0  B  False
                  11          0  C  False
                  12          1  C   True
                  13          1  C   True
                  14          0  C  False
                  15          0  C  False
                  

                  Then we do cumsum for G, is to getting where is the cycle we should set the number to 0

                  df.G.cumsum()
                  Out[135]: 
                  0     0
                  1     0
                  2     1
                  3     1
                  4     1
                  5     1
                  6     1
                  7     2
                  8     2
                  9     3
                  10    3
                  11    3
                  12    4
                  13    5
                  14    5
                  15    5
                  Name: G, dtype: int32
                  

                  这篇关于组内的 Cumsum 并在 pandas 的条件下重置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:使用 automake/autoconf 条件生成文件 下一篇:如何在给定条件下生成所有可能的组合以提高效率?

                  相关文章

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

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

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