首页 > 解决方案 > 查找和替换子字符串前的数值

问题描述

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

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', '')

标签: pandaspython-3.8

解决方案


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

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

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


推荐阅读