首页 > 编程问答 >Python,pandas从字符串中解析数字和字符串

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

时间:2024-07-27 07:37:15浏览次数:13  
标签:python pandas string floating-point

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

7.1英寸 -> 7.1,英寸

7.1” -> 7.1,“

7英寸 -> 7.0,英寸

-10dB -> -10.0,dB

-10.2dB - > -10.2, dB

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


import pandas as pd

def parse_string(text):
    """从字符串中解析数字和文本。

    Args:
        text: 要解析的字符串。

    Returns:
        一个包含浮点数和文本的元组。
    """
    i = 0
    while i < len(text) and (text[i].isdigit() or text[i] in ('.', '-', '+')):
        i += 1
    return float(text[:i]), text[i:]

# 创建示例 DataFrame
df = pd.DataFrame({'value': ['7.1英寸', '7.1”', '7英寸', '-10dB', '-10.2dB']})

# 解析字符串并将其拆分为两列
df[['number', 'suffix']] = df['value'].apply(parse_string).apply(pd.Series)

# 按数值对 DataFrame 进行排序
df = df.sort_values('number')

# 通过组合数值和后缀列来创建新的列
df['combined'] = df['number'].astype(str) + df['suffix']

# 打印 DataFrame
print(df)

这将打印:

   value  number suffix     combined
3  -10.2dB  -10.2    dB  -10.2dB
4   -10dB  -10.0    dB   -10.0dB
2    7英寸    7.0    英寸       7.0英寸
0   7.1英寸    7.1    英寸       7.1英寸
1    7.1”    7.1       ”       7.1”

代码首先定义一个名为 parse_string() 的函数,该函数接收一个字符串并返回一个包含浮点数和文本的元组。此函数使用 while 循环迭代字符串,直到找到非数字字符。然后,它使用切片将字符串拆分为数值部分和文本部分,并将数值部分转换为浮点数。

然后,该代码创建一个示例 DataFrame,并使用 apply() 方法将 parse_string() 函数应用于 value 列。这将创建一个新的 DataFrame,其中包含两列: number suffix

接下来,代码使用 sort_values() 方法按 number 列对 DataFrame 进行排序。

最后,代码通过组合 number suffix 列来创建一个新的 combined 列。 astype(str) 用于将数值列转换为字符串,以便可以将其与文本列连接。

标签:python,pandas,string,floating-point
From: 78800053

相关文章

  • 如何在 Python 中加载站点的所有资源,包括 AJAX 请求等?
    我知道如何使用Python请求网站并读取其文本。过去,我曾尝试使用像BeautifulSoup这样的库来发出对网站上链接的所有请求,但这并没有得到看起来不像完整URL的内容,例如AJAX请求和大多数对原始域(因为“http://example.com”将丢失,更重要的是,它不是<ahref='url'>......
  • 使用Python进行PDF旋转
    使用python旋转扫描的pdf后,它工作得很好,但将pdf发送给第三方后,第三方仍然将pdf检测为90度pdf有什么办法可以解决旋转和这个问题importPyPDF2withopen('input.pdf','rb')asfile:#CreateaPDFreaderobjectreader=PyPDF2.PdfReader(file)......
  • Python win32serviceutil QueryServiceStatus:返回值是什么意思?
    我正在学习使用pywin32,并尝试在64位Python3.6.4上使用win32serviceutil模块以下代码:importwin32serviceutilasserviceserviceStatus=service.QueryServiceStatus("WinDefend")print(serviceStatus)返回以下元组:(16,4,197,0,0,0,0)我对wind......
  • Python request-html 未下载 Chromium
    importrequestsfrombs4importBeautifulSoupfromrequests_htmlimportHTMLSessionurl="https://dmarket.com/ingame-items/item-list/csgo-skins?title=recoil%20case"sesion=HTMLSession()response=sesion.get(url)response.html.render()soup=B......
  • VS Code 不改变 python 环境
    我正在使用VS-Code和anaconda环境作为python解释器。我通过ctrl+shift+`选择准确的anaconda基础环境,它也反映在vscode的下侧面板中。但是,当我检查python版本时,它显示我系统的默认python环境3.7.9如果您看到下面的截图,anaconda环境是3.......
  • 使用 Python 打开保存为 Parquet 文件中元数据的 R data.table
    使用R,我创建了一个Parquet文件,其中包含一个data.table作为主要数据,另一个data.table作为元数据。library(data.table)library(arrow)dt=data.table(x=c(1,2,3),y=c("a","b","c"))dt2=data.table(a=22222,b=45555)attr(dt,&......
  • 为什么警告:FutureWarning:设置不兼容的数据类型的项目已被弃用,并且会在 pandas 的未来
    鉴于这种情况,我不明白为什么要提出这个特殊警告。将函数应用于数字系列时,它会引发“FutureWarning:设置不兼容dtype的项目已被弃用,并将在pandas的未来版本中引发错误。值'[011...100]'具有dtype与int32不兼容,请先显式转换为兼容的数据类型。"这是正在应用的......
  • Python 需要 Windows 长路径
    我尝试运行此安装:pip3installmsgraph-sdk它给了我这个错误:它说我需要使用此链接启用Windows长路径:https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-versi......
  • Python griddata() 和 Matlab griddata():某些网格点的结果不同
    在将一些(相当大的物理)Matlab代码转换为Python时,我偶然发现了这种情况。当对相同的二维离散数据进行插值时,Python/Scipy的griddata()函数给出的结果与Matlab的对应函数不同。griddata()Matlab示例代码:Python示例代码:%Samplepoints(x,y):7x5=3......
  • Ebay Python SDK 仅在特定项目类别上返回错误
    我在一个项目中使用ebaySDK一段时间了。最近我尝试导入一些商品,例如手表、手机壳等...并且我使用了eBay自己通过eBay返回的英国商店页面上的类别ID他们的“get_category_suggestions”API端点,但eBay似乎有选择地决定拒绝某些项目并引发服务器错误!为了测试,我做了......