我试图在聚合语句中应用以下两个imputs函数,但得到了一个不可损坏的类型:“list”TypeError:
from datetime import datetime
def process_difftime(x, y, start, final):
t1 = []
t2 = []
for i in x.index:
if x[i] == start:
t1.append(y[i])
elif x[i] == final:
t2.append(y[i])
res = round((max(t2) - max(t1)).total_seconds()/3600, 2)
return res
List0 = pd.Series(['A10000','A10000','A10001','A10001'], index=[2,3,4,5])
List1 = pd.Series(['A_Create','A_Accepted','A_Create','A_Accepted'], index=[2,3,4,5])
List2 = pd.Series(['2016-08-03 15:57:21','2016-08-03 16:57:21','2016-08-03 15:57:21','2016-08-03 19:57:21'], index=[2,3,4,5])
List2 = pd.Series([datetime.strptime(x,'%Y-%m-%d %H:%M:%S') for x in List2], index=[2,3,4,5])
df = pd.DataFrame({
'code':List0,
'instance':List1,
'timestamp':List2
})
df.groupby(['code']) \
.agg(
a_concept_difftime = (['instance','timestamp'], lambda x,y: process_difftime(x,y,'A_Create','A_Accepted'))
)
有什么建议吗
期望输出
code a_concept_difftime
A10000 1.0
A10000 4.0
其他细节:我正在使用一个大型日志事件数据集,它对应于半标准化流程的执行,大约有60个不同的实例(流程的阶段)和3个不同的时间戳(计划、开始、完成)。该函数的目标是选择实例列和时间戳类型,以计算两个实例之间的小时差(组合可能会改变)
经过几个小时的寻找解决方案,我发现这个贡献满足了我的问题
我还发现元组命名的聚合不能处理多个列,如本文https://github.com/pandas-dev/pandas/issues/29268中所述
感谢@r2evans的贡献https://stackoverflow.com/a/53096340/12514619
相关问题 更多 >
编程相关推荐