用特定字符分隔所有列名称,最后一部分作为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')