基于条件的每次Pandas计数(XX:XX:XX)

2024-05-15 02:41:25 发布

您现在位置:Python中文网/ 问答频道 /正文

使用以下df:

Real_time SName VT  on Act_win ratio
11:11:20    x   5   yes zoom    90
11:11:30    x   15  yes chrome  90
11:11:40    x   25  yes zoom    90
11:11:50    x   35  no  zoom    90
11:12:00    x   45  yes zoom    90
11:12:10    x   55  yes zoom    90
11:12:20    x   65  yes zoom    50
11:12:30    x   75  no  zoom    60
11:12:40    x   85  yes chrome  60
11:12:50    x   95  yes zoom    60
11:13:00    x   105 yes zoom    20
11:11:20    y   5   yes zoom    99
11:11:30    y   15  yes zoom    88
11:11:40    y   25  yes chrome  77
11:11:50    y   35  no  chrome  49
11:12:00    y   45  yes zoom    56
11:12:10    y   55  yes zoom    46
11:12:20    y   65  yes zoom    90
11:12:30    y   75  no  zoom    90
11:12:40    y   85  yes zoom    90
11:12:50    y   95  yes zoom    90
11:13:00    y   105 yes chrome  50

我需要按时间戳分组,并对每个时间戳df["act_win"] = "zoom"的实例进行计数,其中0个实例应计为0(并且不删除该行)

此外,在相同条件下,我想用“平均数”表示“比率”

最后,我需要对多个条件执行相同的操作,给定df["act_win"] = "zoom"df["on"] = "yes"

我被卡住了,因为我只是做了一个总数,然后删除了不必要的行。但是,如果在特定的时间戳中没有“缩放”条目,它将无法工作。 不幸的是,到目前为止我找到的答案创建了一个阶乘列长达数月,这对我这种情况没有帮助

编辑- 最终组合标准的预期结果(包括df["on"] = "yes"df["act_win"] = "zoom"):

Real_time count mean_r
11:11:20    2   94.5
11:11:30    1   88
11:11:40    1   90
11:11:50    0   0
11:12:00    2   73
11:12:10    2   68
11:12:20    2   70
11:12:30    0   0
11:12:40    1   90
11:12:50    2   75
11:13:00    1   20

Tags: 实例nodftimeon时间chrome条件
1条回答
网友
1楼 · 发布于 2024-05-15 02:41:25

也许有更好的方法可以做到这一点,但它是通过将结果与条件提取结果分组来计算的。然后我从它创建一个具有唯一时间戳的数据帧,并将其与

df1 = df[(df['Act_win'] == 'zoom')&(df['on'] == 'yes')].groupby(['Real_time','Act_win']).agg(count=('ratio','count'), mean_r=('ratio','mean'))
df1.reset_index(inplace=True)
df2 = pd.DataFrame({'Real_time':df['Real_time'].unique().tolist()})
df2 = df2.merge(df1, on='Real_time', how='outer')
df2['Act_win'] = df2['Act_win'].fillna(method='ffill')
df2.fillna(0, inplace=True)

df2
    Real_time   Act_win count   mean_r
0   11:11:20    zoom    2.0 94.5
1   11:11:30    zoom    1.0 88.0
2   11:11:40    zoom    1.0 90.0
3   11:11:50    zoom    0.0 0.0
4   11:12:00    zoom    2.0 73.0
5   11:12:10    zoom    2.0 68.0
6   11:12:20    zoom    2.0 70.0
7   11:12:30    zoom    0.0 0.0
8   11:12:40    zoom    1.0 90.0
9   11:12:50    zoom    2.0 75.0
10  11:13:00    zoom    1.0 20.0

相关问题 更多 >

    热门问题