Python:如何删除以某些字符结尾的行?

JetCorey

我有一个大数据文件,我需要删除以某些字母结尾的行。

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

User Name     DN
MB212DA       CN=MB212DA,CN=Users,DC=prod,DC=trovp,DC=net
MB423DA       CN=MB423DA,OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
MB424PL       CN=MB424PL,CN=Users,DC=prod,DC=trovp,DC=net
MBDA423       CN=MBDA423,OU=DNA,DC=prod,DC=trovp,DC=net
MB2ADA4       CN=MB2ADA4,OU=DNA,DC=prod,DC=trovp,DC=netenter code here

我正在使用的代码:

from pandas import DataFrame, read_csv
import pandas as pd
f = pd.read_csv('test1.csv', sep=',',encoding='latin1') 
df = f.loc[~(~pd.isnull(f['User Name']) & f['UserName'].str.contains("DA|PL",))]

如何使用正则表达式语法删除以“ DA”和“ PL”结尾的单词,但请确保不要删除其他行,因为它们中包含“ DA”或“ PL”?

它应该删除行,最后得到一个像这样的文件:

User Name     DN
MBDA423       CN=MBDA423,OU=DNA,DC=prod,DC=trovp,DC=net
MB2ADA4       CN=MB2ADA4,OU=DNA,DC=prod,DC=trovp,DC=net

前3行被删除,因为它们以DA和PL结尾。

ƘɌỈSƬƠƑ

您可以使用此表达式

df = df[~df['User Name'].str.contains('(?:DA|PL)$')]

它将返回所有不以DA或PL结尾的行。

?:是让括号不会捕捉任何东西。否则,您会看到熊猫返回以下(无害)警告:

UserWarning: This pattern has match groups. To actually get the groups, use str.extract.

或者,使用endswith()和不使用正则表达式,可以通过使用以下表达式来实现相同的过滤:

df = df[~df['User Name'].str.endswith(('DA', 'PL'))]

不出所料,没有正则表达式的版本会更快。一个简单的测试,由组成big_df,其中包含10001份原件的副本df

# Create a larger DF to get better timing results
big_df = df.copy()

for i in range(10000):
    big_df = big_df.append(df)

print(big_df.shape)

>> (50005, 2)

# Without regular expressions
%%timeit
big_df[~big_df['User Name'].str.endswith(('DA', 'PL'))]

>> 10 loops, best of 3: 22.3 ms per loop

# With regular expressions
%%timeit
big_df[~big_df['User Name'].str.contains('(?:DA|PL)$')]

>> 10 loops, best of 3: 61.8 ms per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从元素中删除以某些字符结尾的类

Notepad ++删除以特定字符结尾的行

在Node中,如何删除以某些特定字符结尾的子字符串

如何删除以某些字符串开头的行

如何删除以元素结尾的行

如何删除以元素结尾的行

如何删除以某些内容开头和结尾的子字符串?

删除除以字符串“.com”结尾的所有行

无法删除以 PHP 结尾的奇怪的返回字符/行

删除以重复符号结尾的字符串 (Python)

如何删除以^ {}结尾的裁判

熊猫:如何消除以特定字符结尾的值的行?

在Pandas中删除以某些字符串结尾的多列

如何删除以“ [”开头,以“]”结尾和括号中所有字符([和]除外)的行片段?佩尔

如何在python中删除以特定字符串结尾的数据框中列表的特定成员

删除以数字开头和结尾的行

删除以 CRLF 结尾的行中的 CRLF

如何删除以1结尾的数组元素?

如何删除以句点结尾的分支

数据框:是否删除以特定字符串结尾的行?

如何删除以单个连字符开头或结尾或同时包含两者的域?

如何从列表中删除以特定模式结尾的字符串?

在python中查找并删除以特定数字开头和结尾的字符串

如何删除以特定词开头和以特定词结尾的行

如何使用awk或sed删除以冒号结尾的文件中的所有行?

如何在 Ruby 中删除以某些字符开头的字符串

删除以字符串模式结尾的变量

删除以特定字符开头的文本,直到结尾

删除以特定字符串开头但结尾不同的句子