我正在尝试在熊猫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})': ?}),但不确定第二个参数要输入什么。

最佳答案

您可以使用基于正则表达式的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,并且您将对其索引以获取所需的列/组。

关于python - 如何使用正则表达式在 Pandas 数据框中捕获字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57129138/

10-14 18:22
查看更多