如何解决如何在布尔列上的df的几列中进行聚合?
初始df有4列:
日期时间,生产线编号,var1,var2,运行中
date_time是:时间戳
production_line_no是:用于标识生产线的分类
var1,var2是:数字
running:是指示生产线是否正在运行的布尔值
我需要沿着运行周期时间进行几次聚合,并将其返回到包含运行周期开始和结束(均值= 1)的时间戳以及聚合的var和production_line_no
最终df必须看起来像这样:
开始date_time,end_date_time,Time_delta,production_line_no,var1_aggregation_1,var1_aggregation_2,var2_aggregation_1,var2_aggregation_2,....
有人知道如何实现吗? 谢谢。
解决方法
我花了一些时间,然后我就这样做了:
首先我将问题分为两部分,1. 循环识别,2. 聚合计算。
以下代码运行良好,但肯定可以优化。
# Convert date time string to DateTime type
df['date_time']= pd.to_datetime(df['date_time'],format='%Y-%m-%d %H:%M')
# Create cycle_ID to differenciate the different cycles and prepare the use of groupby() + agg()
df['cycle_ID']=df['running'].diff().abs().cumsum()*df['running']
# Define agg type Pandas built-in
aggregations = {
'var1':['std','min'],'var2':['std','date_time':lambda x:(max(x) - min(x)).days
}
# Create the grouped object
grouped=df.groupby(by=['cycle_ID','production_line_no'],as_index=False).agg(aggregations)
grouped
这是我得到的结果
我怎样才能让它更健壮或更快?因为它需要应用于大量行。
我还希望能够将聚合函数扩展到更复杂的函数,更专注于时间序列分析,如积分(曲线下面积,或计算正/负峰的数量、拐点的值、. ..)
如何通过数据可视化按周期扩展分析?像 FacetGrid 图和叠加图? 对此有何建议?
感谢您的意见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。