gpt4 book ai didi

python - 迭代 groupby 数据帧以在每一行中进行操作

转载 作者:行者123 更新时间:2023-12-03 21:54:48 26 4
gpt4 key购买 nike

我有一个像这样的数据帧:

    subject  trial  attended
0 1 1 1
1 1 3 0
2 1 4 1
3 1 7 0
4 1 8 1
5 2 1 1
6 2 2 1
7 2 6 1
8 2 8 0
9 2 9 1
10 2 11 1
11 2 12 1
12 2 13 1
13 2 14 1
14 2 15 1
  • 我想以 GroupBy 为主题。
  • 然后在 GroupBy 数据帧的每一行中迭代。
  • 如果一行 'attended' == 1,则将变量 sum_reactive 增加 1。
  • 如果 sum_reactive 变量达到 == 4,则在字典中添加变量 sum_reactive 达到 4 的“主题”和“试验”。

  • 我试图为此定义一个函数,但它不起作用:
    def count_attended():
    sum_reactive = 0
    dict_attended = {}
    for i, g in reactive.groupby(['subject']):
    for row in g:
    if g['attended'][row] == 1:
    sum_reactive += 1
    if sum_reactive == 4:
    dict_attended.update({g['subject'] : g['trial'][row]})
    return dict_attended

    return dict_attended

    我认为我不清楚如何在每个 GroupBy 数据帧内进行迭代。我是使用 Pandas 的新手。

    最佳答案

    IIUC尝试,

    df = df.query('attended == 1')
    df.loc[df.groupby('subject')['attended'].cumsum() == 4, ['subject', 'trial']].to_dict(orient='record')

    输出:
    [{'subject': 2, 'trial': 9}]

    使用 groupbycumsum将进行计数,然后检查此值何时等于 4 以创建 bool 系列。您可以使用此 bool 系列进行 bool 索引以将数据框过滤到某些行。最后,通过锁定和列过滤选择主题和试验。

    关于python - 迭代 groupby 数据帧以在每一行中进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61917968/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com