【问题标题】:Increment count in Pandas dataframe when values change and when time exceeds condition当值更改和时间超过条件时,Pandas 数据帧中的增量计数
【发布时间】:2019-12-04 20:17:13
【问题描述】:

每次Person的值发生变化时,将count重置为0。每次时间从初始增量超过2时增加count。

Person Time DesiredResult
B      0    0
B      2    0
B      2    0
B      4    1
A      0    0
S      0    0
S      1    0
S      2    0
S      4    1
S      8    2

生成数据框的代码:

df = pd.DataFrame({'Person': ['Bob','Bob','Bob','Bob','Alvin','Steve','Steve','Steve','Steve','Steve']
                     ,'Time': [0,2,2,4,0,0,1,2,4,8]
                     ,'DesiredResult': [0,0,0,1,0,0,0,0,1,2]})

Image附在下面的链接中

【问题讨论】:

    标签: python pandas jupyter-notebook window


    【解决方案1】:

    我假设你没有DesiredResult列。

    要创建它,请定义以下函数:

    def fn(grp):
        t0 = grp.iloc[0].Time
        return (grp.Time > t0 + 2).cumsum()
    

    然后运行:

    df['DesiredResult'] = df.groupby('Person').apply(fn).reset_index(level=0, drop=True)
    

    【讨论】:

    • df = pd.DataFrame({'Person': ['Bob','Bob','Bob','Bob','Alvin','Steve','Steve','Steve','Steve','Steve','Steve','Steve'] ,'Time': [0,2,2,4,6,0,1,2,4,5,8,9] ,'DesiredResult': [0,0,0,1,0,0,0,0,1,1,2,2]}) def fn(grp): t0 = grp.iloc[0].Time return (grp.Time > t0 + 2).cumsum() df['DesiredResult2'] = df.groupby('Person').apply(fn).reset_index(level=0, drop=True) df 在这种情况下,一旦超过 2 秒窗口,个人的每条记录都会增加。这几乎有效,感谢您的回复
    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 2018-02-20
    • 2020-08-27
    • 2021-04-07
    • 2022-11-30
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多