带有聚合功能的Python itertools groupby

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

我正在尝试根据列的出现顺序(时间戳)对列进行分组,并同时在小组中的其他变量上找到合计(平均值)。我可以成功将其分组,但无法汇总

这是我的示例输入:

Date        T/F X1
12/02/19    T   10
12/02/19    T   20
12/02/19    F   15
12/02/19    T   12
12/03/19    F   10
12/03/19    F   20
12/03/19    T   30
12/04/19    T   40

预期O / P

Date        T/F X1  Count
12/02/19    T   15  2
12/02/19    F   15  1
12/02/19    T   12  1
12/03/19    F   15  2
12/03/19    T   35  2

这里是我正在使用的代码,该代码将每个组分组并提供给我计数,在该组中我也如何获得X1的平均值

import itertools 
for (key,group) in itertools.groupby(df['T/F']): 
    print (key, len(list(group))) 

感谢您的帮助!

python pandas itertools
1个回答
1
投票

您可以使用功能groupby

groupby

输出:

df1 = df.assign(Count=np.nan).\
groupby(df['T/F'].ne(df['T/F'].shift()).cumsum(), as_index=False).\
agg({'Date': 'first', 'T/F': 'first', 'X1': 'mean', 'Count': 'size'})

print(df1)
© www.soinside.com 2019 - 2024. All rights reserved.