[問題] dataframe使用replace的疑問

看板Python作者 (14號星期五的傑森)時間4年前 (2020/06/28 13:00), 4年前編輯推噓2(205)
留言7則, 3人參與, 4年前最新討論串1/1
各位版友好 不才小弟這邊有個問題想詢問,還盼望版友能指點,先謝謝 我有一個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

06/28 13:10, 4年前 , 1F
df['Test'].str.replace('.0', '', regex=False)
06/28 13:10, 1F

06/28 13:23, 4年前 , 2F
可以問詢問一下,這個regex不是預設就False嗎?
06/28 13:23, 2F

06/28 13:24, 4年前 , 3F
也先謝謝你回答
06/28 13:24, 3F
另想詢問一下,若我今天是想複數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

06/28 14:50, 4年前 , 4F
.apply(lambda x: x.str.replace('.0','',regex=False))
06/28 14:50, 4F

06/28 14:51, 4年前 , 5F
你先弄懂 pandas API reference 吧
06/28 14:51, 5F

06/28 16:24, 4年前 , 6F
好的~ 謝謝
06/28 16:24, 6F

07/05 02:12, 4年前 , 7F
rstrip(“.0”)
07/05 02:12, 7F
文章代碼(AID): #1U-2Fgge (Python)