簡體   English   中英

在日期時間索引的熊貓數據框中選擇固定時間間隔的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM