Python itertools groupby with aggregate



我正在尝试根据列出现的顺序(时间戳(对列进行分组,同时在小组内的其他变量上查找聚合(平均值(。我可以成功分组,但无法聚合

这是我的示例输入:

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

预期盈利

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))) 

感谢您的帮助!

您可以使用函数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)

输出:

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

最新更新