我有一个数据框:a = {'TXI': ['TXI|GS|-4.08|ABCD', 'TXI|TX|0', 'TXI|SP|7.06|ABCD']}a = pd.DataFrame (a, columns = ['TXI']) 我试图删除基于开头的最后 5 个字符,以获得像 b 这样的结果:b = {'TXI': ['TXI|GS|-4.08', 'TXI|TX|0', 'TXI|SP|7.06']}b = pd.DataFrame (b, columns = ['TXI'])我在下面尝试的代码不会更新数据框。哪里错了?for i in a.TXI: if not i.startswith('TXI|TX'): i = i[:-5]
2 回答
![?](http://img1.sycdn.imooc.com/5458477f0001cabd02200220-100-100.jpg)
沧海一幻觉
TA贡献1824条经验 获得超5个赞
您可以通过分配和应用来做到这一点:
a = a.assign(TXI = lambda x: x['TXI'].apply(lambda s: s[:-5] if s.startswith('TXI|TX') else s ))
结果将是:
TXI
0 TXI|GS|-4.08|ABCD
1 TXI
2 TXI|SP|7.06|ABCD
![?](http://img1.sycdn.imooc.com/5458626a0001503602200220-100-100.jpg)
HUH函数
TA贡献1836条经验 获得超4个赞
请使用where
函数
a.TXI.where(a.TXI.str.startswith('TXI|TX'), a.TXI.str[:-5])
0 TXI|GS|-4.08
1 TXI|TX|0
2 TXI|SP|7.06
添加回答
举报
0/150
提交
取消