python - 删除具有csv文件某些关键字的行

标签 python python-3.x pandas

我有一个大数据文件,我需要删除具有特定关键字的行。

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

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= 并使用 [^,]* , 捕获第一个逗号之前的模式;

关于python - 删除具有csv文件某些关键字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978160/

相关文章:

python - 在 pandas/numpy 中运行应用函数时访问元素的 2D 索引?

python - 如何将单列中所有数据的 pandas 数据框转换为多列?

python - 从已经运行的进程创建子进程对象

python - 从 odeint scipy python 使用的函数中提取值

python - 为 % 创建一个 Groupby Grand Total 行

django - 用于 Django 开发的 Python 2.7 与 Python 3.3

python - 如何使用 for 循环遍历 pandas 数据框列以根据给定列表计算值

Python 错误 : OSError: [Errno 22] Invalid argument

python - 排序python列表以使字母出现在数字之前

python - Pandas 面板 : How To Iterate Over the Minor Axis?