[問題] dataframe使用replace的疑問

作者: jasonhsu14 (小健人)   2020-06-28 13:00:24
各位版友好
不才小弟這邊有個問題想詢問,還盼望版友能指點,先謝謝
我有一個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的這個想法,但為什麼會出現這種奇怪的結果
以上兩個問題,還麻煩版友了,謝謝
作者: mthsieh (Gleeman)   2020-06-28 13:10:00
df['Test'].str.replace('.0', '', regex=False)
作者: jasonhsu14 (小健人)   2020-06-28 13:23:00
可以問詢問一下,這個regex不是預設就False嗎?也先謝謝你回答
作者: mthsieh (Gleeman)   2020-06-28 14:50:00
.apply(lambda x: x.str.replace('.0','',regex=False))你先弄懂 pandas API reference 吧
作者: jasonhsu14 (小健人)   2020-06-28 16:24:00
好的~ 謝謝
作者: gene50814 (genechen)   2020-07-05 02:12:00
rstrip(“.0”)

Links booklink

Contact Us: admin [ a t ] ucptt.com