簡體   English   中英

根據列值從 Pandas DataFrame 中刪除行

[英]Removing rows from a Pandas DataFrame based on a column value

我有一個 dataframe 有三列:“id”、“訪問”和“文件夾路徑”。 我想刪除作為根文件夾的子路徑並具有相同訪問權限和 ID 的所有文件夾。 例如,在下面的 dataframe 中,需要刪除第三行,因為 abc 已經具有對根文件夾的讀取權限:

id       access      folder path
abc      read        C:/new
abc      write       C:/new
abc      read        C:/new/folder
abc      read        C:/new1
def      read        C:/new
  1. /處拆分folder path

    df[['path1','path2','path3']] = df['folder path'].str.split("/",expand=True,n=2)

它將產生一個看起來像這樣的 dataframe,

id   access folder path      path1   path2  path3
abc  read    C:/new           C:      new    None
abc  write   C:/new           C:      new    None
abc  read    C:/new/folder    C:      new   folder
abc  read    C:/new1          C:      new1   None
def  read    C:/new           C:      new    None
  1. 現在從列idaccesspath2中刪除所有重復項,其中path3值為None 為此目的創建兩個蒙版。 一個用於識別所有None ,另一個用於在所需列中查找重復項。

     m1 = df['path3'].isna() m2 = ~df[['id','access','path2']].duplicated() df_new = df[m1 & m2]

最終 DataFrame 將是

id   access folder path      
abc  read    C:/new        
abc  write   C:/new           
abc  read    C:/new1          
def  read    C:/new 

      
  1. 刪除path1path2path3

暫無
暫無

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

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