我有这个 csv 文件示例:(读作 AAA 项目成本 1000,项目 AAA(1) 成本 2000)
ColumnName
AAA (1000)
AAA (1) (2000)
我想创建一个包含所有数字的 pandas dataframe 列
即
Column_cost
1000
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]
最佳答案
另一种使用 Series.str.split
的解决方案, str.strip
和 astype
:
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
关于python - 检索 Panda Dataframe 列中列表的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56324232/