使用正则表达式在字符串的开头AND末尾带有〜的熊猫行进行过滤

时间:2018-09-11 20:43:30

标签: python regex pandas

我正在尝试在熊猫中使用正则表达式来过滤出给定列的在行首和行尾有~的行。例如,使用以下熊猫数据框:

import pandas as pd
df = pd.DataFrame({'line': [1, 2, 3, 4, 5, 6, 7, 8, 9],
                   'Unit': ['LF', 'LS~', '~~SF', 'CY', '~SF~', 'PC', '~~', '~LF', '~PC~']})

这是我想要输出的内容:

df[df.Unit.str.contains(MY_EXPRESSION, regex=True)]
   line Unit
0     1   LF
1     2   LS~
2     3   ~~SF
3     4   CY
5     6   PC
7     8   ~LF

到目前为止,我已经尝试过:

  1. MY_EXPRESSION ='^ [^〜]。* [^〜] $'

这将过滤在字符串的开头或结尾带有〜的所有内容。我只想过滤出在字符串的开头和结尾处带有~的行。

  1. MY_EXPRESSION ='^([^〜])(。*)([^〜])$'

这还会过滤掉在字符串的开始或结尾处带有〜的行。同样,我只想过滤出在字符串的开头和结尾处带有~的行。

我需要什么正则表达式(例如,示例中的MY_EXPRESSION)以按所需方式过滤数据框?

我正在使用pandas v.0.23.4。

1 个答案:

答案 0 :(得分:1)

使用pandas.Series.str.match

df[~df.Unit.str.match('^~.*~$')]

   Unit  line
0    LF     1
1   LS~     2
2  ~~SF     3
3    CY     4
5    PC     6
7   ~LF     8