我有一个csv文件(2不同的样本)-
样品-1-
Date-Time Func Byte
2023/01/01 16:45:13 APP 0
2023/01/01 16:57:08 APP 1
2023/01/01 17:10:44 APP 5
2023/01/01 17:11:04 APP 0
2023/01/01 17:12:24 APP 0
2023/01/01 17:15:27 APP 4
2023/01/01 17:16:08 APP 4
样品-2-
Date-Time Func Byte
2023/01/01 16:45:13 APP 4
2023/01/01 16:57:08 APP 1
2023/01/01 17:10:44 APP 5
2023/01/01 17:11:04 APP 0
2023/01/01 17:12:24 APP 0
2023/01/01 17:15:27 APP 4
2023/01/01 17:16:08 APP 4
2023/01/01 17:16:20 APP 0
我想获取start_time(当字节值开始为非零时)和end time(当字节值结束为非零时),如果结束时间是文件的最后一行,也将其保留为空-
样品1的输出-
Date/Time(Start) Func Date/Time(Start)
2023/01/01 16:57:08 APP 2023/01/01 17:10:44
2023/01/01 17:15:27 APP
样品2的输出-
Date/Time(Start) Func Date/Time(Start)
2023/01/01 16:45:13 APP 2023/01/01 17:10:44
2023/01/01 17:15:27 APP 2023/01/01 17:16:08
2条答案
按热度按时间gblwokeq1#
首先过滤掉
boolean indexing
中的非0
值,并通过Series.cumsum
创建组的累积和连续的非0
值,因此可能通过GroupBy.agg
first
和last
datetime值和用于测试最后一个值的索引列进行聚合:如果需要按
Func
色谱柱处理每组溶液:7lrncoxx2#
您可以将
mask
与duplicated
和bfill
一起使用:输出:
中间体:
*
的行是输出中的最后一行。*