我有一个大数据文件,我需要删除具有特定关键字的行。
这是我正在使用的文件示例:
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')
我怎么能
- 例如,删除 DN 列中包含“OU=DNA”的所有行?
- 如何删除 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=
并使用 [^,]* ,
捕获第一个逗号之前的模式;
关于python - 删除具有csv文件某些关键字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978160/