Python 保持列名的最后两个元素由管道分隔
我有一个DF,看起来像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
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('|')