首页 > 编程问答 >检索 Panda Dataframe 列中列表的最后一个元素

检索 Panda Dataframe 列中列表的最后一个元素

时间:2024-07-29 12:12:19浏览次数:13  
标签:python pandas dataframe

我有这个 csv 文件示例:(将其读为项目 AAA 成本 1000,项目 AAA(1) 成本 2000)

ColumnName
AAA (1000)
AAA (1) (2000)

我想创建所有数字的 pandas 数据框列

Column_cost
1000
2000

我尝试拆分this by '(' 返回类似以下内容的内容(因为第二个项目的名称中有 '(':

Result 1
Col_1 Col_2 Col_3

AAA 1000) None

AAA   1)  2000)  

所以数字不在同一列中

然后我尝试创建一列列表,其中给出| ||但同样,我不知道如何创建一个使用每个列表的最后一个元素的列。

Result 2

ColumnName2

[AAA,1000)]

[AAA,1),2000)]

我可以为特定索引获取它,但不能为整个列获取它

从结果 2 中,我执行以下操作以获得一个特定单元格的所需结果,但我不知道如何对整个列执行此操作(我可以对小数据集执行此操作,但不能对大数据集执行此操作)

x = df['ColumnName'].str.split('(',expand=True) gives Result 1 above

x = df['ColumnName'].str.split('(') gives Result 2 above

检索列表特定索引的,获取列表的最后一个元素,将其按空格分割,然后检索分割列表的新元素

retrieves the list of a particular index, gets the last element of the list, splits it by spaces, and then retrieves the new element of the split list

x[0][-1].split()[0]
x[1][-1].split()[0]

可以使用 str.extract 并使用正则表达式来提取括号内的最后一个数字:

import pandas as pd

df = pd.DataFrame({'ColumnName': ['AAA (1000)', 'AAA (1) (2000)']})

df['Column_cost'] = df['ColumnName'].str.extract(r'\((\d+)\)\s*$').astype(int)

print(df)

这将给出:

       ColumnName  Column_cost
0     AAA (1000)         1000
1  AAA (1) (2000)         2000

以下是代码的工作原理:

  1. str.extract(r'\((\d+)\)\s*$') :
  2. \((\d+)\) : 此正则表达式查找由文字括号 ( ) 包围的一个或多个数字 \d+ 。括号内的部分 (\d+) 是一个捕获组,这意味着我们只想提取此部分(数字)。
  3. \s*$ : 这匹配字符串末尾的零个或多个空格字符 \s* 。这确保我们获得最后一个括号内的数字。
  4. .astype(int) : 这将从正则表达式提取的字符串值转换为整数。

这种方法高效地搜索的字符串并仅提取所需的数字,使其成为大型数据集的合适解决方案。

标签:python,pandas,dataframe
From: 56324232

相关文章

  • python 将数字前面的字符替换为数字后面的新字符
    我有一些字符串看起来像:*.rem.1.gz和*.rem.2.gz我想将其替换为*.1.trim.gz和*.2.trim.gz1号文件和2号文件相互配对,我想创建一个单独的字符串来同时包含这两个文件。importosallfiles=os.listdirpair=[x.replace("rem.(\d+)","(\d+).trim")forxinall......
  • Pandas 将从 OECD 修订后的统计 API 中获取数据
    OECD更改了其统计API。在以前的版本中,此结构有效。oecd=pdmx.Request("OECD")data=oecd.data(resource_id="HH_DASH",key="AUS+DEU+ITA+JPN+KOR+GBR+USA+EU27_2020+EMU+G7M+OECD.RGDP_INDEX+RHHGDI_INDEX.Q/all?startTime=2007-Q1&endTime=202......
  • 使用python打开UNC文件
    如何使用python通过路径打开网络计算机上的文件?我当前正在使用os.startfile但随后出现错误winerror2:无法打开文件。文件路径是正确的,我可以通过win+R打开该文件。感谢您提供的任何帮助。importwin32wnetimportosdefopen_unc_path(unc_path,usern......
  • Python环境:深入理解与构建实践
    Python环境:深入理解与构建实践在当今的软件开发领域中,Python以其简洁的语法、丰富的库支持和广泛的应用场景,成为了众多开发者、数据科学家、机器学习工程师及自动化测试人员的首选语言。然而,要高效地使用Python进行项目开发,深入理解并合理构建Python环境是至关重要的。本文......
  • 界面自动化测试录制工具,让python selenium自动化测试脚本开发更加方便
    自动化测试中,QTP和seleniumIDE都支持浏览器录制与回放功能,简单的来说就像一个记录操作步骤的机器人,可以按照记录的步骤重新执行一遍,这就是脚本录制。个人觉得传统录制工具有些弊端,加上要定制支持我自己的自动化框架(python单机版自动化测试框架源代码),所以自己用javascript写了一个......
  • Python 面试常问问题及应用场景解析
    引言随着Python在数据科学、Web开发、自动化脚本、机器学习等领域中的广泛应用,越来越多的公司开始寻找具备Python技能的人才。因此,在Python面试中,面试官通常会通过一系列问题来评估应聘者的编程基础、问题解决能力和对Python特性的理解程度。本文将涵盖Python面试中最常见的......
  • python 虚拟环境
    python虚拟环境Python的venv模块允许你创建轻量级的“虚拟环境”,这些环境是独立的Python安装,用于项目的依赖隔离。每个虚拟环境都有自己的Python解释器、库和脚本,与系统中安装的Python相互隔离。这意呀着,你可以在一个项目中安装特定版本的库,而不会影响到系统上其他Pyt......
  • 使用 Azure Devops API (Python) 撰写 PR 评论
    在任何地方都找不到直接的方法。如何通过Python中的AzureDevopsAPI将注释添加到拉取请求?可以使用AzureDevOpsPythonAPI将注释添加到拉取请求。以下是执行此操作的方法:1.安装AzureDevOps库:pipinstallazure-devops2.导入必要的类并对的组......
  • Python\Python312\Lib\site-packages\torch\lib\fbgemm.dll
    在此处输入图像描述我正在尝试从HuggingFace导入GPT-2变压器模型,但当我尝试导入它时,遇到错误。即使当我尝试仅导入Torch时,我也会收到相同的错误。我已尝试重新安装Torch并完成了所有操作,包括更新VisualC++Redistributable软件包和更新我的驱动程序,但问题......
  • Python GEKKO 不更新参数
    我正在Python中使用GEKKO来估计弹跳球的轨迹。为此,我需要估计2个变量:e_1(恢复系数)和q_1(每次弹跳时的水平速度损失)。我已为其编写了以下代码,但参数似乎没有更新,尽管解算器已成功执行。参数的初始值与参数的最终优化值相同e_1=0.8和q_1=1代码:imp......