看板 Python 關於我們 聯絡資訊
各位版友好 不才小弟這邊有個問題想詢問,還盼望版友能指點,先謝謝 我有一個dataframe,其中,我想針對某一欄位的文字格式的數字做處理 該欄的值都是小數點1位,那我想處理的方式如下: 若小數點位的數字是0,那我希望該值拿掉小數點的部分,如:1.0 改為 1 而小數點位的數字非0,則保持原樣,如:0.6 仍為 0.6 我原先的想法是說,都是文字格式,那我就將該值若出現'.0'的話就取代為'' 因此,我的寫法是使用replace('.0' , '') 就先附上一個範例程式碼 import pandas as pd data=['123.0' , '0.1', '10.1' , '10.0'] df=pd.DataFrame(data=data, columns=['Test']) df['Test'].str.replace('.0', '') 可是replace寫法會讓我的df['Test'] 變成 '123' 、 '0.1' 、 '.1' 、 '' 目前看起來是10的部分都會消失.... 所以想詢問版友兩個問題 1.上述提到的小數位為0的移除問題有甚麼樣的簡單解決方式 (我知道可以用for loop去解決,但只是在想有沒有更簡單的方式) 2.因為想用簡單一點的方式,才有replace的這個想法,但為什麼會出現這種奇怪的結果 以上兩個問題,還麻煩版友了,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.101.201 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1593320426.A.AA8.html
mthsieh: df['Test'].str.replace('.0', '', regex=False) 06/28 13:10
jasonhsu14: 可以問詢問一下,這個regex不是預設就False嗎? 06/28 13:23
jasonhsu14: 也先謝謝你回答 06/28 13:24
另想詢問一下,若我今天是想複數column呢? 我意思是,df['Test'] 是一個 Series,所以用str.relpace('.0','',regex=False) 但如果複數column,比如:df[['T1', 'T2', ...]]會是一個df 那df[['T1', 'T2', ...]].replace('.0','',regex=False),跑出來結果還是有'.0' ※ 編輯: jasonhsu14 (220.135.101.201 臺灣), 06/28/2020 13:58:07
mthsieh: .apply(lambda x: x.str.replace('.0','',regex=False)) 06/28 14:50
mthsieh: 你先弄懂 pandas API reference 吧 06/28 14:51
jasonhsu14: 好的~ 謝謝 06/28 16:24
gene50814: rstrip(“.0”) 07/05 02:12