Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中对选定行(最长子序列)应用聚合函数_Python_Function_Dataframe_Aggregate_Rows - Fatal编程技术网

在python中对选定行(最长子序列)应用聚合函数

在python中对选定行(最长子序列)应用聚合函数,python,function,dataframe,aggregate,rows,Python,Function,Dataframe,Aggregate,Rows,我正在从事一个Python项目,在这个项目中,我遇到了一个特殊的问题,需要帮助 旁边是我拥有的输入数据帧,需要对输入序列应用聚合函数(如平均值),以获得如下图所示的输出。请注意,聚合函数处理的是A、B、C等最长的连续序列,与常规聚合函数不同 输入DF示例: 类型--值 A---1 A---1 A---1 B---1 B---1 A---1 A---1 A---1 A---1 C---1 C---1 C---1 A---1 A----1 所需输出DF: 类型--AGG_SUM A---3 B---

我正在从事一个Python项目,在这个项目中,我遇到了一个特殊的问题,需要帮助

旁边是我拥有的输入数据帧,需要对输入序列应用聚合函数(如平均值),以获得如下图所示的输出。请注意,聚合函数处理的是A、B、C等最长的连续序列,与常规聚合函数不同

输入DF示例:

类型--值
A---1
A---1
A---1
B---1
B---1
A---1
A---1
A---1
A---1
C---1
C---1
C---1
A---1
A----1

所需输出DF:

类型--AGG_SUM
A---3
B---2
A---4
C---3
A---2


提前感谢您的帮助。

考虑使用
shift
loc
cumsum
创建一个组标识符,然后按原始的
类型和新的
GRP
进行聚合:

#换档类型前进一行
df['TYPE_lead']=df['TYPE'].班次(1)
#类型和类型导联不匹配的标志(即连续中断)
df['GRP']=0
df.loc[df['TYPE'].ne(df['TYPE_lead']),'GRP']=1
#按总和分配组
df['GRP']=df.groupby(['TYPE'])['GRP'].cumsum()
df
#类型值类型\u铅玻璃钢
#0 A 1 NaN 1
#1 A 1 A 1
#2 A 1 A 1
#3 B 1 A 1
#4b1b1
#5 A 1 B 2
#6 A 1 A 2
#7 A 1 A 2
#8 A 1 A 2
#9C1A1
#10C1C1
#11 C 1 C 1
#12 A 1 C 3
#13 A 1 A 3
#聚合
agg_df=(df.groupby(['TYPE','GRP'],sort=False)
.agg(agg_SUM=('VALUE','SUM'))
.reset_index()
.drop(['GRP'],axis='columns')
)
agg_-df
#类型AGG_SUM
#0 A 3
#1 B 2
#2 A 4
#3 C 3
#4 A 2