[英]Choose rows a fixed time-interval apart in Datetime-indexed pandas dataframe
我有一個由 DateTime 索引的熊貓數據框,從小時“00:00:00”到小時“23:59:00”(按分鍾遞增,不計算秒數)。
in: df.index
out: DatetimeIndex(['2018-10-08 00:00:00', '2018-10-08 00:00:00',
'2018-10-08 00:00:00', '2018-10-08 00:00:00',
'2018-10-08 00:00:00', '2018-10-08 00:00:00',
'2018-10-08 00:00:00', '2018-10-08 00:00:00',
'2018-10-08 00:00:00', '2018-10-08 00:00:00',
...
'2018-10-08 23:59:00', '2018-10-08 23:59:00',
'2018-10-08 23:59:00', '2018-10-08 23:59:00',
'2018-10-08 23:59:00', '2018-10-08 23:59:00',
'2018-10-08 05:16:00', '2018-10-08 07:08:00',
'2018-10-08 13:58:00', '2018-10-08 09:30:00'],
dtype='datetime64[ns]', name='DateTime', length=91846, freq=None)
現在我想選擇特定的間隔,比如每 1 分鍾或每 1 小時,從“00:00:00”開始,並連續檢索間隔開的所有行。
我可以抓住整個時間間隔,比如說第一個小時的時間間隔,
df.between_time("01:00:00","00:00:00")
但我希望能夠
(a) 僅獲取相隔特定時間間隔的所有時間 (b) 獲取所有 1 小時的時間間隔,而無需手動詢問 24 次。 如何在 between_time 命令中增加 DatetimeIndex? 還有比這更好的方法嗎?
我會用屏蔽而不是制作新的數據框來解決這個問題。 例如,您可以添加一列df['which_one']
並為每個子集設置不同的數字。 然后您可以通過調用df[df['which_one']==x]
來訪問子集,其中x
是您要選擇的子集。 通過這種方式訪問數據,您仍然可以執行其他條件語句以及 Pandas 必須提供的幾乎所有其他內容。
PS 還有其他方法可以更快地訪問數據。 我只是使用了我最喜歡的另一種方式是df[df['which_one'].eq(x)]
。
如果您對數據幀感到厭煩,我建議您使用數據幀字典進行操作,例如:
import pandas as pd
dfdict={}
for i in range(0,10):
dfdict[i]=pd.DataFrame()
print(dfdict)
正如您將看到的,它們確實是 dfs
out[1]
{0: Empty DataFrame
Columns: []
Index: [], 1: Empty DataFrame
Columns: []
Index: [], 2: Empty DataFrame
Columns: []
Index: [], 3: Empty DataFrame
Columns: []
Index: [], 4: Empty DataFrame
Columns: []
Index: [], 5: Empty DataFrame
Columns: []
Index: [], 6: Empty DataFrame
Columns: []
Index: [], 7: Empty DataFrame
Columns: []
Index: [], 8: Empty DataFrame
Columns: []
Index: [], 9: Empty DataFrame
Columns: []
Index: []}
盡管正如其他人所建議的那樣,可能有更實用的方法來解決您的問題(如果沒有更具體的問題很難說)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.