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

Python 检索Panda Dataframe列中列表的最后一个元素,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个csv文件示例:(将其理解为物品AAA成本1000和物品AAA(1)成本2000) 我想创建一个包含所有数字的数据框列 即 我尝试将其拆分为“(”,它返回如下内容(因为第二项的名称中有“(”): Result 1 Col_1 Col_2 Col_3 AAA 1000) None AAA 1) 2000) 所以数字不在同一列中 然后,我尝试创建一列列表,其中 Result 2 ColumnName2 [AAA,1000)] [AAA,1),2000)] 但是,我也不

我有一个csv文件示例:(将其理解为物品AAA成本1000和物品AAA(1)成本2000)

我想创建一个包含所有数字的数据框列

我尝试将其拆分为“(”,它返回如下内容(因为第二项的名称中有“(”):

Result 1
Col_1 Col_2 Col_3

AAA 1000) None

AAA   1)  2000)  
所以数字不在同一列中

然后,我尝试创建一列列表,其中

Result 2

ColumnName2

[AAA,1000)]

[AAA,1),2000)]
但是,我也不知道如何创建一个使用每个列表的最后一个元素的列

我可以为一个特定的索引得到它,但不能为整个列得到它

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

x = df['ColumnName'].str.split('(') gives Result 2 above
根据结果2,我对一个特定单元格执行了以下操作以获得所需的结果,但我不知道如何对整个列执行此操作(我可以对小数据集执行此操作,但对大数据集则不行)

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

x[0][-1].split()[0]
x[1][-1].split()[0]
您可以使用来匹配括号内的数字,并添加
“$”
,使其仅在字符串末尾匹配:

df.assign(Column_cost = df.ColumnName.str.extract(r'\((\d+)\)$'))

       ColunmName    Column_cost
0      AAA (1000)        1000
1  AAA (1) (2000)        2000
另一个解决方案使用,以及:

[外]


谢谢Chris,works(某些astype(int)不适用于我,因此我使用apply(pd.to_numeric,errors='concurve'),如果您知道原因,请告诉我,但现在一切正常。很可能是由于最后一对括号之间的非数字字符。可能是逗号、句点或货币符号…?例如
[,.$]
@yatu,对不起,是的,谢谢它成功了(我想我的赞成票不算,因为我是一个新用户),但是,由于我对这一点还不熟悉,我更喜欢使用另一种方法,因为这是我代码的一个小变化,再次感谢
x[0][-1].split()[0]
x[1][-1].split()[0]
df.assign(Column_cost = df.ColumnName.str.extract(r'\((\d+)\)$'))

       ColunmName    Column_cost
0      AAA (1000)        1000
1  AAA (1) (2000)        2000
df['Column_cost'] = df.ColumnName.str.split('(').str[-1].str.strip(')').astype(int)
       ColumnName  Column_cost
0      AAA (1000)         1000
1  AAA (1) (2000)         2000