2024-06-11 11:39:56 发布
网友
我试图正则表达式出一个特定的字符串在我的字典里。 假设我有这样一个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})': ?}),但不确定第二个参数应该放什么。你知道吗
df.replace({'(\w{3}\d{3})': ?})
您可以使用基于regex的Series.str.extract函数来保留匹配的组。您还需要对regex进行修复\w元素的基数应该是2。最终代码将是:
\w
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,并且您将索引到它中以获得所需的列/组。你知道吗
expand=False
str.extract
DataFrame
Series
df["a"]
expand
您可以使用基于regex的Series.str.extract函数来保留匹配的组。您还需要对regex进行修复
\w
元素的基数应该是2。最终代码将是:expand=False
表示您不希望str.extract
返回一个DataFrame
,默认情况下它是这样做的,以便容纳多个regex组(它为每个组返回一列)。因为您已经知道这里只有一个regex组,为了方便起见,您可以指定expand=False
以获取Series
,您可以立即将其分配给df["a"]
。如果有多个regex组,那么不管您为expand
指定了什么,函数都将返回一个DataFrame
,并且您将索引到它中以获得所需的列/组。你知道吗相关问题 更多 >
编程相关推荐