查找并替换子字符串前的数值
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
默认情况下进行全局替换,因此无需使用任何类型的标志。
另一种方法是匹配 kd
和 kd
之前的数字并将其替换为空
df["col1"]=df.col1.str.replace('\d+kd\Z','', regex=True)
我有一个如下所示的数据框:
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
默认情况下进行全局替换,因此无需使用任何类型的标志。
另一种方法是匹配 kd
和 kd
之前的数字并将其替换为空
df["col1"]=df.col1.str.replace('\d+kd\Z','', regex=True)