如何在熊猫中选择具有特定字符串模式的行?

Posted

技术标签:

【中文标题】如何在熊猫中选择具有特定字符串模式的行?【英文标题】:How to select rows with specific string patterns in pandas? 【发布时间】:2020-02-24 20:40:56 【问题描述】:

我知道我们可以使用str.contains 方法来选择部分字符串。

我的专栏是这样的,

col1
V2648   
V9174.
V9071
V0021;+
V7615***
()()
random
words

我想选择所有包含V+ 4 digits number 模式的行。所以我们需要对这些字符串应用多个条件。

我的输出会是这样的,

col1
V2648   
V9174.
V9071
V0021;+
V7615***

【问题讨论】:

你熟悉正则表达式吗? @Derek_6424246 哦,是的,我忘了。 【参考方案1】:

你可以这样做:

mask = df.col1.str.startswith('V') & df.col1.str.contains('\d+')
print(df[mask])

输出

       col1
0     V2648
1    V9174.
2     V9071
3   V0021;+
4  V7615***

掩码df.col1.str.startswith('V') 检查以'V' 开头的所有内容,df.col1.str.contains('\d+') 检查所有具有4 数字的内容。如果您想完全匹配 V 后跟 4 位数字,请使用:

mask = df.col1.str.contains('^V\d+')

【讨论】:

嗨@JiayuZhang 很高兴我能帮上忙,如果我没记错的话,那将匹配 5 位数字。【参考方案2】:

str.match

df[df.col1.str.match('[V](\d4)')]
Out[135]: 
       col1
0     V2648
1    V9174.
2     V9071
3   V0021;+
4  V7615***

【讨论】:

以上是关于如何在熊猫中选择具有特定字符串模式的行?的主要内容,如果未能解决你的问题,请参考以下文章

删除熊猫数据框中具有特定值的行[重复]

熊猫选择列中的值不以字符串开头的行

如何从数据库中回显具有特定变量的行

如何在特定列中添加具有相同字符串值的行,并且不转换数据框? [重复]

在文件中查找具有特定字符串的行数

熊猫数据透视表选择具有最大值的行