将顺序计数器添加到数据帧中的组,但在满足条件时跳过增量

阿卜舍克·萨尼

我正在寻找在数据帧中使用组设置增量计数器。除非满足条件,否则我想增加组中每一行的计数器。如果满足条件,我想使用以前的计数。我也希望为每个组重置此设置。

例:

d1 = {'col1': [1, 1, 1, 2, 2, 3], 'col2': ['A', 'A', 'B', 'A', 'A', 'B']}
df1 = pd.DataFrame(data=d1)
df1

输出:

   col1 col2
0   1   A
1   1   A
2   1   B
3   2   A
4   2   A
5   3   B

预期输出:

  col1 col2 count
0   1   A   1
1   1   A   2
2   1   B   2
3   2   A   1
4   2   A   2
5   3   B   0

我尝试使用numpy cumsum。但是我不确定如何重用最后一个

编辑:希望按列1分组。

Bernardo Stearns旅行

我按照我所希望的内容编写了一个代码段,如果某些内容确实与您期望的不完全相同,则可以绝对地重用它以进行适应。

我认为这里的关键是:1)对(previousRow,currentRow)对进行迭代,以便您可以轻松访问最后一行信息

2)具体条件是否符合您的期望。

3)尝试在if条件下更新计数,然后设置值

import pandas as pd
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
from itertools import zip_longest
d1 = {'col1': [1, 1, 1, 2, 2, 3], 'col2': ['A', 'A', 'B', 'A', 'A', 'B']}
df1 = pd.DataFrame(data=d1)

df1['count'] = 0
df1_previterrows = df1.iterrows()
df1_curriterrows = df1.iterrows()
df1_curriterrows.__next__()

groups_counter = {}

df1_firstRow = df1.iloc[0]
if df1_firstRow["col2"] == "A":
    groups_counter[df1_firstRow['col1']]=1
    df1.set_value(0, 'count', 1)
elif df1_firstRow["col2"] == "B":
    groups_counter["B"]=1
    df1.set_value(0, 'count', 0)

zip_list = zip_longest(df1_previterrows, df1_curriterrows) 
for (prevRow_idx, prevRow), Curr  in zip_list:
    if not (Curr is None):
        (currRow_idx, currRow) = Curr
        if((currRow["col1"] == prevRow["col1"]) and (currRow["col2"] == "A")):
            count = groups_counter.get(currRow["col1"],False)
            if not count:
                groups_counter[currRow["col1"]]=0
            groups_counter[currRow["col1"]]+=1

        elif((currRow["col1"] != prevRow["col1"]) and (currRow["col2"] == "A")):
            groups_counter[currRow["col1"]]=1

        elif((currRow["col1"] == prevRow["col1"]) and (currRow["col2"] == "B")):
            if not groups_counter.get(currRow["col1"],False):
                groups_counter[curr["col1"]] = 1

        elif((currRow["col1"] != prevRow["col1"]) and (currRow["col2"] == "B")):
            groups_counter[currRow["col1"]]=0
        df1.set_value(currRow_idx, 'count', groups_counter[currRow["col1"]])
print(df1)

输出:

   col1 col2  count
0     1    A      1
1     1    A      2
2     1    B      2
3     2    A      1
4     2    A      2
5     3    B      0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:如何将计数器对象添加到数据帧?

来自分类Dev

根据特定值按组将计数器添加到面板数据

来自分类Dev

在 python tkinter 中为测验添加到每个帧的计数器?

来自分类Dev

在R中按组向数据帧添加索引(或计数器)

来自分类Dev

Tkinter-Python 3-将增量计数器添加到类窗口中?

来自分类Dev

将逗号添加到setinterval计数器值

来自分类Dev

使用 python 数据框,将满足条件的行计数列添加到满足条件的每一行

来自分类Dev

循环并添加到R中的计数器

来自分类Dev

将已过的时间计数器添加到等待栏中-Matlab

来自分类Dev

将记录添加到表中,直到计数器为真

来自分类Dev

R:在满足条件时将新行添加到数据框,然后重复最终值

来自分类Dev

遍历数据框并根据条件将增量值添加到列中

来自分类Dev

尝试将多个顺序编号列添加到R中的数据帧

来自分类Dev

在r中绑定时,将嵌套的for循环的计数器值添加到每一行

来自分类Dev

无法将一些代码添加到我的点数计数器脚本中

来自分类Dev

迭代时将元素添加到数据帧

来自分类Dev

T-SQL将计数器添加到分组数据

来自分类Dev

在jMeter中将循环计数器添加到CSV数据

来自分类Dev

将图标计数器添加到适用于Ubuntu 12.10的GNOME桌面

来自分类Dev

如何将字符计数器添加到SMS APP?

来自分类Dev

将AJAX添加到带有计数器的Rails 4 Like / Unlike按钮

来自分类Dev

将图标计数器添加到适用于Ubuntu 12.10的GNOME桌面

来自分类Dev

Python-如何使用计数器将列元素添加到列表

来自分类Dev

如何使用变量计数器将命名元素添加到R列表?

来自分类Dev

将变量计数器添加到jQuery ID

来自分类Dev

将循环结果添加到R中的数据帧

来自分类Dev

将计数器添加到sql表

来自分类Dev

SQL-将记录添加到临时表中,直到满足顺序

来自分类Dev

SQL-将记录添加到临时表中,直到满足顺序

Related 相关文章

  1. 1

    Python:如何将计数器对象添加到数据帧?

  2. 2

    根据特定值按组将计数器添加到面板数据

  3. 3

    在 python tkinter 中为测验添加到每个帧的计数器?

  4. 4

    在R中按组向数据帧添加索引(或计数器)

  5. 5

    Tkinter-Python 3-将增量计数器添加到类窗口中?

  6. 6

    将逗号添加到setinterval计数器值

  7. 7

    使用 python 数据框,将满足条件的行计数列添加到满足条件的每一行

  8. 8

    循环并添加到R中的计数器

  9. 9

    将已过的时间计数器添加到等待栏中-Matlab

  10. 10

    将记录添加到表中,直到计数器为真

  11. 11

    R:在满足条件时将新行添加到数据框,然后重复最终值

  12. 12

    遍历数据框并根据条件将增量值添加到列中

  13. 13

    尝试将多个顺序编号列添加到R中的数据帧

  14. 14

    在r中绑定时,将嵌套的for循环的计数器值添加到每一行

  15. 15

    无法将一些代码添加到我的点数计数器脚本中

  16. 16

    迭代时将元素添加到数据帧

  17. 17

    T-SQL将计数器添加到分组数据

  18. 18

    在jMeter中将循环计数器添加到CSV数据

  19. 19

    将图标计数器添加到适用于Ubuntu 12.10的GNOME桌面

  20. 20

    如何将字符计数器添加到SMS APP?

  21. 21

    将AJAX添加到带有计数器的Rails 4 Like / Unlike按钮

  22. 22

    将图标计数器添加到适用于Ubuntu 12.10的GNOME桌面

  23. 23

    Python-如何使用计数器将列元素添加到列表

  24. 24

    如何使用变量计数器将命名元素添加到R列表?

  25. 25

    将变量计数器添加到jQuery ID

  26. 26

    将循环结果添加到R中的数据帧

  27. 27

    将计数器添加到sql表

  28. 28

    SQL-将记录添加到临时表中,直到满足顺序

  29. 29

    SQL-将记录添加到临时表中,直到满足顺序

热门标签

归档