[英]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
在/
處拆分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
現在從列id
、 access
、 path2
中刪除所有重復項,其中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
path1
、 path2
、 path3
列
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.