[英]Finding consecutive minutes in pandas
我正在關注這篇文章 - Pandas 輸出日期、開始和結束時間以及給定日期時間連續性的事件狀態
測試連續小時的示例在帖子中。 我需要在連續幾分鍾內進行測試。 我將代碼行從 3600 修改為 60(小時到分鍾)
#test consecutive minutes
df['g'] = df['Date'].diff().dt.total_seconds().div(60).ne(1)
最終結果在任何連續分鍾內返回全部 True。
Date meter g
2009-02-13 13:23:00 53.49 True
2009-02-13 13:24:00 64.91 True
2009-02-13 13:25:00 32.04 True
2009-02-13 13:26:00 45.94 True
2009-02-13 15:45:00 45.94 True
結果應該在哪里
Date meter g
2009-02-13 13:23:00 53.49 True
2009-02-13 13:24:00 64.91 False
2009-02-13 13:25:00 32.04 False
2009-02-13 13:26:00 45.94 False
2009-02-13 15:45:00 45.94 True
這里有什么問題?
您的代碼問題可能是由於浮點近似造成的? 如果您將值四舍五入,這將得到解決:
pd.to_datetime(df['Date']).diff().dt.total_seconds().div(60).round().ne(1)
但是,有一個更好的方法,使用 Timedelta 比較屬性:
df['g'] = pd.to_datetime(df['Date']).diff().ne('1min')
輸出:
Date meter g
0 2009-02-13 13:23:00 53.49 True
1 2009-02-13 13:24:00 64.91 False
2 2009-02-13 13:25:00 32.04 False
3 2009-02-13 13:26:00 45.94 False
4 2009-02-13 15:45:00 45.94 True
對於您的第一個問題(小組的第一個和最后一個):
forward = pd.to_datetime(df['Date']).diff().ne('1min')
reverse = (-pd.to_datetime(df['Date']).diff(-1)).ne('1min')
df['g'] = forward|reverse
輸出:
Date meter g
0 2009-02-13 13:23:00 53.49 True
1 2009-02-13 13:24:00 64.91 False
2 2009-02-13 13:25:00 32.04 False
3 2009-02-13 13:26:00 45.94 True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.