簡體   English   中英

返回包含特定值的多索引 df 中的行

[英]Return rows in a multi-index df where it contains a specific value

我有以下多索引 df:

         pageid
sid vid
 1  ABC     dog
    ABC     cat
    ABC     fish
 2  DEF     pig
    DEF     cat
    DEF     fish
 3  GHI     pig
    GHI     cat
    GHI     dog

我想保留只包含一些值的子索引——在這個例子中我將使用 dog。

前:

        pageid
sid vid
 1  ABC     dog
    ABC     cat
    ABC     fish
 2  DEF     pig
    DEF     cat
    DEF     fish
 3  GHI     pig
    GHI     cat
    GHI     dog

After(僅包含帶有值 dog 的pageid sid

        pageid
sid vid
 1  ABC     dog
    ABC     cat
    ABC     fish
 3
    GHI     pig
    GHI     cat
    GHI     dog

這里:

df.groupby('sid').filter(lambda x: x['pageid'].eq('dog').sum() > 0)

它是做什么的:

  1. 通過 ID 獲取子 DF 的列表
  2. 僅獲取其中pageid計數大於0那些組

或者像@db 建議的那樣

df.loc[df['pageid'].eq('dog').groupby('sid').transform(any)]

有什么作用:

  1. 創建一個掩碼,如果pageIddog則每行為True ,否則為False
  2. sid對屏蔽的行進行分組
  3. 將每組屏蔽行轉換為一個屏蔽行
  4. 使用該掩碼從數據框中獲取行組

暫無
暫無

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

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