如何使用正则表达式在熊猫数据框中捕获字符串

时间:2019-07-20 22:45:01

标签: python pandas

我正在尝试在熊猫df中正则表达式输出一个字符串。 假设我有这样的df:

         a                  b
0  foo foo AA123 bar        4
1  foo foo BB245 bar        5
2  foo CA234 bar bar        5

我怎么得到这个df:

     a          b
0  AA123        4
1  BB245        5
2  CA234        5

我尝试过的一种方法是df.replace({'(\w{3}\d{3})': ?}),但不确定第二个参数应输入什么。

1 个答案:

答案 0 :(得分:2)

您可以使用基于正则表达式的Series.str.extract函数仅保留匹配的组。您还需要修复正则表达式-\w元素的基数应为2。最后,代码为:

df["a"] = df["a"].str.extract('(\w{2}\d{3})', expand=False)

expand=False表示您不希望str.extract返回一个DataFrame,默认情况下会这样做,以容纳多个正则表达式组(每个组返回一列)。由于您已经知道这里只有一个正则表达式组,因此为方便起见,您指定expand=False来取回Series,您可以立即将其分配给df["a"]。如果有多个正则表达式组,则无论您为DataFrame指定什么,该函数都将返回一个expand,并且您将对其索引以获取所需的列/组。