查找并替换子字符串前的数值

Find and replace numeric values preceding a substring

我有一个如下所示的数据框:

df['col1'].values

array(['cat 113kd29',     'do56goat24kdasd',     'pig145kd'])

我需要使用以下值创建一个新列 df['vals']

cat 29
do56goatasd
pig

即首先,我需要查找子字符串 kd,然后找到它前面的数值。我不知道该怎么做。

每个字符串中可以有多个数值,所以我只需要找到 kd 之前的数值。请注意字符串 'cat 113kd29'。另请参阅 'do56goat24kdasd'

我尝试了以下但没有用:

df['col1'].str.replace(r'(\d+)kd', '')

您对 str.replace 的调用是正确的,但您需要将其分配给分配左侧的原始 Pandas 列:

df["col1"] = df["col1"].str.replace(r'\d+kd', '')

请注意 str.replace 默认情况下进行全局替换,因此无需使用任何类型的标志。

另一种方法是匹配 kdkd 之前的数字并将其替换为空

df["col1"]=df.col1.str.replace('\d+kd\Z','', regex=True)