【发布时间】:2022-11-16 20:00:44
【问题描述】:
我有一个包含两列和一个日期时间索引的大型数据框。绘制它的一部分时,它看起来像这样:
基本上,根据 SOC 列,数据可以上升(充电)或下降(放电)(有时在这些循环中保持不变)。
数据框如下所示:
SoC Power
2021-09-25 16:40:00 0.76 2.18
2021-09-25 16:40:10 0.76 2.14
2021-09-25 16:40:20 0.77 2.18
2021-09-25 16:40:30 0.76 1.14
2021-09-25 16:40:30 0.75 1.14
2021-09-25 16:40:30 0.75 1.14
我想提取第一个充电和放电周期。在此示例中,预期输出将是新的数据帧:
“收费”:
SoC Power
2021-09-25 16:40:00 0.76 2.18
2021-09-25 16:40:10 0.76 2.14
2021-09-25 16:40:20 0.77 2.18
“放电”
SoC Power
2021-09-25 16:40:30 0.76 1.14
2021-09-25 16:40:30 0.75 1.14
2021-09-25 16:40:30 0.75 1.14
我最接近的提取充电会话的方法如下:
max = df_3['SoC'].diff() < 0
idx = max.idxmax()
df = df.loc[df.index[0]:idx]
但是,它仅在数据以充电会话开始时才起作用(因为它所做的只是在值开始减少时停止)。我想要一个解决方案,尽管有初始数据点,但仍能提供第一个充电周期数据点。
【问题讨论】:
-
您应该提供数据的最小示例(以及预期的输出)
-
按照this 创建一个最小的工作示例。
-
你能分享你的预期输出吗?输出中的预期日期
-
我认为寻找最大/最小值可能不是找到循环的正确方法。您应该检查范围,并确定一个高/低阈值(比如 95%/5%),然后使用它来确定充电周期的开始/结束。
-
您好,感谢 cmets,我刚刚编辑了帖子。希望现在清楚了:)