簡體   English   中英

刪除帶有csv文件某些關鍵字的行

[英]Deleting rows with certain keywords of csv file

我有一個大數據文件,需要刪除具有某些關鍵字的行。

這是我正在使用的文件的示例:

User Name     DN
MB31212       CN=MB31212,CN=Users,DC=prod,DC=trovp,DC=net
MB23423       CN=MB23423 ,OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
MB23424       CN=MB23424 ,CN=Users,DC=prod,DC=trovp,DC=net
MB23423       CN=MB23423,OU=DNA,DC=prod,DC=trovp,DC=net
MB23234       CN=MB23234 ,OU=DNA,DC=prod,DC=trovp,DC=net

這是我導入文件的方式:

import pandas as pd
df = pd.read_csv('sample.csv', sep=',', encoding='latin1')

我怎樣才能

  1. 例如,刪除DN列中所有包含“ OU = DNA”的行?
  2. 如何刪除DN列中的第一個屬性“ CN = x”,而不刪除該列中的其余數據?

我想得到類似於下面發布的內容,其中刪除了包含“ OU = DNA”的2行,並從每一行中刪除了“ CN = x”:

User Name     DN
MB31212       CN=Users,DC=prod,DC=trovp,DC=net
MB23423       OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
MB23424       CN=Users,DC=prod,DC=trovp,DC=net

您可以嘗試將此兩步過濾作為邏輯。 使用str.contains方法篩選出具有行OU=DNA和使用str.replace方法與正則表達式來修整領先CN=x

newDf = df.loc[~df.DN.str.contains("OU=DNA")]
newDf.DN = newDf.DN.str.replace("^CN=[^,]*,", "")
newDf

    UserName    DN
0   MB31212 CN=Users,DC=prod,DC=trovp,DC=net
1   MB23423 OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
2   MB23424 CN=Users,DC=prod,DC=trovp,DC=net

正則表達式略有不同: ^表示字符串的開頭,其后是CN=並使用[^,]*,捕獲模式,直到第一個逗號為止;

要讀取您使用的文件樣本,我使用了:

df = pd.read_csv('sample.csv', sep='     ', encoding='latin1', engine="python")

接着:

df = df.drop(df[df.DN.str.contains("OU=DNA")].index)
df.DN = df.DN.str.replace('(CN=MB[0-9]{5}\s*,)', '')
df

得到了預期的結果:

    User Name   DN
0   MB31212     CN=Users,DC=prod,DC=trovp,DC=net
1   MB23423     OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
2   MB23424     CN=Users,DC=prod,DC=trovp,DC=net

暫無
暫無

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

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