為什麼這篇python replace數字鄉民發文收入到精華區:因為在python replace數字這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者jasonhsu14 (14號星期五的傑森)看板Python標題[問題] dataframe使用...
各位版友好
不才小弟這邊有個問題想詢問,還盼望版友能指點,先謝謝
我有一個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
另想詢問一下,若我今天是想複數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