用特定字符分隔所有列名称,最后一部分作为Pandas中的新列名称

问题描述

我有一个数据列,其列名称如下:

id,xxx>xxx>x,yy>y,zzzz>zzz>zz>z,...

我需要从右侧将第二个>分开,并将第一个元素作为新的列名id,xxx>x,zz>z,...

我已经使用:'zzzz>zzz>zz>z'.rsplit('>',1)[-1]来获取z作为第三列的预期新列名称。

当我使用时:df.columns = df.columns.rsplit('>',1)[-1]

出局:

ValueError: Length mismatch: Expected axis has 13 elements,new values have 2 elements

我该怎么做呢?

解决方法

尝试做:

names = pd.Index(['xxx>xxx>x','yy>y','zzzz>zzz>zz>z'])
names = pd.Index([idx[-1] for idx in names.str.rsplit('>')])
print(names)
# Index(['x','y','z'],dtype='object')

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...