我正在寻找一种方法来聚合Pandas Dataframe 连续相同的价值观和执行行动,如计数或最大的这个聚合。
例如,如果我在df中有一列:
my_column
0 0
1 0
2 1
3 1
4 1
5 0
6 0
7 0
8 0
9 1
10 1
11 0
结果需要是:
result
0 2
1 2
2 3
3 3
4 3
5 4
6 4
7 4
8 4
9 2
10 2
11 1
为什么:我们开始有两个0,接下来有三个1,...
我需要的是类似于这个answer,但对于组中的所有元素,我需要相同的值。
首选的答案是显示连续相同元素的聚合,并对其应用聚合函数。这样我就可以做甚至最大值:
my_column other_value
0 0 7
1 0 4
2 1 1
3 1 0
4 1 5
5 0 1
6 0 1
7 0 2
8 0 8
9 1 1
10 1 0
11 0 2
结果就是
result
0 7
1 7
2 5
3 5
4 5
5 8
6 8
7 8
8 8
9 1
10 1
11 2
2条答案
按热度按时间p1iqtdky1#
您可以用途:
输出:
注意:要获得最大值,请使用
df.groupby(g)["other_value"].transform("max")
。6ie5vjzr2#
如果检查linked answer,则存在通过连续值进行分组的确切方法:
因此,如果创建每列
my_column
的连续组,则输出为:可以将
GroupBy.transform
和GroupBy.size
用于每组计数值如有必要,一列
DataFrame
加上Series.to_frame
。DataFrameGroupBy.count
用于忽略缺失值的计数值,这里工作,因为没有NaN
s*或者
Series.map
与Series.value_counts
:第二种解决方案类似: