我正在尝试在熊猫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/