簡體   English   中英

選擇多索引數據幀的最新示例

[英]Select most recent example of multiindex dataframe

我有一個類似的問題,如在多索引中獲取級別的最后一個元素 在提到的問題中,多索引數據幀對於每個組都有一個始終相同的起始編號。

但是,我的問題略有不同。 我再次有兩列。 一列帶有整數(在下面的 MWE 中是一個布爾值)和第二列帶有日期時間索引。 與上面的示例類似,我想為第一列最后一行中的每個唯一值選擇。 在我的示例中,它表示具有最新時間戳的值。 上述問題的解決方案不起作用,因為第二列沒有固定的起始值。

MWE:

import pandas as pd

df = pd.DataFrame(range(10), index=pd.date_range(pd.Timestamp("2020.01.01"), pd.Timestamp("2020.01.01") + pd.Timedelta(hours=50), 10))
mask = (df.index.hour > 1) & (df.index.hour < 9)
df.groupby(mask)
df = df.groupby(mask).rolling("4h").mean()

生成的數據框如下所示:

                             0
False 2020-01-01 00:00:00  0.0
      2020-01-01 11:06:40  2.0
      2020-01-01 16:40:00  3.0
      2020-01-01 22:13:20  4.0
      2020-01-02 09:20:00  6.0
      2020-01-02 14:53:20  7.0
      2020-01-02 20:26:40  8.0
True  2020-01-01 05:33:20  1.0
      2020-01-02 03:46:40  5.0
      2020-01-03 02:00:00  9.0

現在,我想為第一列中的每個值獲取具有最新時間戳的行。 即,我想獲得以下數據框:

                             0
False 2020-01-02 20:26:40  8.0
True  2020-01-03 02:00:00  9.0

我真的很感激上面提到的鏈接中的想法。

假設級別 1 中的值已排序,請嘗試使用groupby tail

out = df.groupby(level=0).tail(1)

out

                             0
False 2020-01-02 20:26:40  8.0
True  2020-01-03 02:00:00  9.0

如果不是sort_index首先:

out = df.sort_index(level=1).groupby(level=0).tail(1)

out

                             0
False 2020-01-02 20:26:40  8.0
True  2020-01-03 02:00:00  9.0

暫無
暫無

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

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