如何使用正则表达式获取数据帧中的字符串

2024-06-11 11:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图正则表达式出一个特定的字符串在我的字典里。 假设我有这样一个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})': ?}),但不确定第二个参数应该放什么。你知道吗


Tags: 方法字符串df参数字典foobarreplace
1条回答
网友
1楼 · 发布于 2024-06-11 11:39:56

您可以使用基于regex的Series.str.extract函数来保留匹配的组。您还需要对regex进行修复\w元素的基数应该是2。最终代码将是:

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

expand=False表示您不希望str.extract返回一个DataFrame,默认情况下它是这样做的,以便容纳多个regex组(它为每个组返回一列)。因为您已经知道这里只有一个regex组,为了方便起见,您可以指定expand=False以获取Series,您可以立即将其分配给df["a"]。如果有多个regex组,那么不管您为expand指定了什么,函数都将返回一个DataFrame,并且您将索引到它中以获得所需的列/组。你知道吗

相关问题 更多 >