从 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 。一旦你有了一个包含每个字符串的数值的列,你就可以随心所欲地与之交互。
我想从像这样的字符串中提取数字。它们出现在许多列中,那么删除这些字符串并仅获取数字的最有效方法是什么?除了使用 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 。一旦你有了一个包含每个字符串的数值的列,你就可以随心所欲地与之交互。