【问题标题】:Find and replace numeric values preceding a substring [closed]查找和替换子字符串之前的数值[关闭]
【发布时间】:2021-09-20 14:12:53
【问题描述】:

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

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

【问题讨论】:

  • but it didn't work ...您当前对str.replace 的调用实际上应该有效。如果不是上面的预期,你会得到什么输出?
  • 它只是不做任何事情并产生原始列

标签: pandas python-3.8


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2018-01-09
      • 1970-01-01
      相关资源
      最近更新 更多