逐行求和Pandas中的数据组

问题描述 投票:0回答:2

我在使用 Pandas 对一组数据每行求和时遇到了很多麻烦。 我尝试更好地解释。

我有一个数据框(见下文),我想在其中计算每个块中存在的 event_code 列中“闪烁”的事件数量(event_block 中从 0 到 5)。 假设每个块的行数相同。

谢谢您的帮助!

               event_block     event_code
    0                 0         blink
    1                 0         blink
    2                 0         -1
    3                 0         -1
    4                 0         -1
    5                 1         -1
    6                 1         blink
    7                 1         -1
    8                 1         blink
    9                 1         -1  

我尝试了多种方法来获得一个优雅的解决方案,但没有成功。 我的想法是为闪烁事件生成 0 和 1 的二进制向量,然后为每个事件块生成总和,但我总是在每个块的每一行中得到相同的总和数...

result_df['is_blink'] = (result_df['event_code'] == 'blink').astype(int)

根据需要输出:

blink_count     
1         
2         
0         
1         
0    
python pandas dataframe data-science scientific-computing
2个回答
0
投票

使用

groupby

>>> df.groupby("event_block")["event_code"].agg(lambda x: x.eq("blink").sum())

0
投票

首先使用

groupby.cumcount
生成计数器,然后
groupby.sum
:

(df['event_code'].eq('blink')
 .groupby(df.groupby('event_block').cumcount())
 .sum()
)

输出:

0    1
1    2
2    0
3    1
4    0
Name: event_code, dtype: int64
© www.soinside.com 2019 - 2024. All rights reserved.