Python 保持列名的最后两个元素由管道分隔

Python 保持列名的最后两个元素由管道分隔,python,pandas,Python,Pandas,我有一个DF,看起来像 a|b|c|d e|f|g|h i|j|k|l 1 4 7 2 5 8 3 6 9 我想把它改造成 |c|d g|h k|l 1 4 7 2 5 8 3 6 9 当我使用下面的行时,它会给出最后一行或第二行 test.rename(columns = lambda x: x.spl

我有一个DF,看起来像

a|b|c|d   e|f|g|h   i|j|k|l
1         4         7
2         5         8
3         6         9
我想把它改造成

|c|d      g|h   k|l
1         4     7
2         5     8
3         6     9
当我使用下面的行时,它会给出最后一行或第二行

test.rename(columns = lambda x: x.split("|")[-1] , inplace = True)
test.rename(columns = lambda x: x.split("|")[-2] , inplace = True)
但是当我给它如下,它会执行,但当我做一个
test.head()
我得到一个错误

test.rename(columns = lambda x: x.split("|")[-2:] , inplace = True)
TypeError:不可损坏的类型:“列表”


请提供修复建议。

使用
连接
,因为选择最后2个值将获得
列表

test.rename(columns = lambda x: '|'.join(x.split("|")[-2:]) , inplace = True)
print (test)
   c|d  g|h  k|l
0    1    4    7
1    2    5    8
2    3    6    9
另一个解决方案,谢谢:


或者
df.columns.str.split('|').str[-2:].str.join('|'))
来获得列列表。感谢大家提供的解决方案
test.columns = test.columns.str.split('|').str[-2:].str.join('|')