Python、pandas 从字符串中解析数字和字符串

问题描述 投票:0回答:1

在Python中,我想解析一个字符串并将数字部分(可能有也可能没有小数点)作为浮点数返回,并将后缀作为字符串返回。例子有:

7.1 英寸 -> 7.1, 英寸

7.1” -> 7.1,“

7 英寸 -> 7.0,英寸

-10dB -> -10.0, 分贝

-10.2dB -> -10.2, 分贝

数字部分和后缀之间没有空格。另外,我想将其应用于具有此格式的 Pandas DataFrame 列,以便我可以按浮点值排序。然后,我想在排序后将后缀附加回列中的每个元素。请建议执行此操作的代码。谢谢!

python pandas string floating-point
1个回答
0
投票

您不需要为此创建新列,只需将

sort_values
与自定义
key
函数一起使用,该函数使用正则表达式并返回数字类型的数字。

正则表达式模式适用于问题中提供的数字。如果您的数据中有不同格式的数字,则可能需要调整模式。

import pandas as pd
import re

data = {"measurements": ["7.1inch", "7.1”", "7in", "-10dB", "-10.2dB", "text"]}
df = pd.DataFrame(data)

def extract_numeric(s):
    match = re.match(r"(-?\d*\.?\d+)", s)
    if match:
        return float(match.group(1))

df = df.sort_values(by="measurements", key=lambda x: x.map(extract_numeric))
  measurements
4      -10.2dB
3        -10dB
2          7in
0      7.1inch
1         7.1”
5         text
© www.soinside.com 2019 - 2024. All rights reserved.