簡體   English   中英

Groupby 每天的特定時間間隔

[英]Groupby specific hour interval per day

我有一個看起來像這樣的數據框:

df = 

                     val1     val2
date
----------------------------------
2021-06-01 00:00     1        3
2021-06-01 01:00     2        4
2021-06-01 02:00     3        5
2021-06-01 03:00     4        6
2021-06-01 04:00     5        7
2021-06-02 00:00     6        8
2021-06-02 01:00     7        9
2021-06-02 02:00     8        10
2021-06-02 03:00     9        11
2021-06-02 04:00     10       12
2021-06-03 00:00     11       13
2021-06-03 01:00     12       14
2021-06-03 02:00     13       15
2021-06-03 03:00     14       16
2021-06-03 04:00     15       17

如果我然后做類似的事情:

df_new = df.groupby(df.index.date).mean()

生成的數據框將是:

df_new = 

                     val1     val2
date
----------------------------------
2021-06-01           3        5
2021-06-02           8        10
2021-06-03           13       15

但是,我希望這種情況僅在每天的特定時間間隔內發生。 所以在這種情況下,可能只從00:00-03:00而不是04:00 因此,生成的數據框應該是:

df_true = 

                     val1     val2
date
----------------------------------
2021-06-01           2.5      4.5
2021-06-02           7.5      9.5
2021-06-03           12.5     14.5

第一個想法是通過boolean indexing過濾行,然后在groupbyDataFrame.resample中使用Grouper

df_new = df[df.index.hour < 4].groupby(pd.Grouper(freq='D')).mean()
df_new = df[df.index.hour < 4].resample('D').mean()
print (df_new)
            val1  val2
date                  
2021-06-01   2.5   4.5
2021-06-02   7.5   9.5
2021-06-03  12.5  14.5

或者使用DataFrame.between_time

df_new = df.between_time('0:00', '3:00').groupby(pd.Grouper(freq='D')).mean()
df_new = df.between_time('0:00', '3:00').resample('D').mean()
print (df_new)
            val1  val2
date                  
2021-06-01   2.5   4.5
2021-06-02   7.5   9.5
2021-06-03  12.5  14.5

我更喜歡@jezrael 的方法,但緊貼您當前的代碼,您可以這樣做:

m = (df.index.hour >=0) & (df.index.hour <= 3)
df[m].groupby(df[m].index.date).mean()

Output:

            val1  val2
2021-06-01   2.5   4.5
2021-06-02   7.5   9.5
2021-06-03  12.5  14.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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