我有一個數據框: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 回答

滄海一幻覺
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

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
提交
取消