从 python 中的字符串中提取数字

Extract numbers from strings in python

我想从像这样的字符串中提取数字。它们出现在许多列中,那么删除这些字符串并仅获取数字的最有效方法是什么?除了使用 regex

之外还有其他方法吗

假设您希望每列只有一个数字,您可以尝试在此处使用 str.extract

df["some_col"] = df["some_col"].str.extract(r'(\d+(?:\.\d+)?)')

我会使用一个带有正则表达式的函数来匹配您所看到的模式。由于您标记了 pandas 和数据框,我假设您正在使用数据框,但示例输出肯定会有所帮助。以下是我将如何处理它:

import pandas as pd
import numpy as np
import re

def extract_numbers (column1: str):
  result = np.nan
  for x in column1.split():
    if re.search(r'\d+\.?\d+', x)
      result = float(re.search(r'\d+\.?\d+', x).group())

    if pd.notnunll(result):
      return result

df['Numbers'] = df['YourColumn'].apply(extract_numbers)

此函数的结果将是一个名为“Numbers”的新列,其中包含从每个字符串中提取的数字。当找不到(或匹配到)数字时,它将 return NaN 。一旦你有了一个包含每个字符串的数值的列,你就可以随心所欲地与之交互。