[问题] 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