作者jasonhsu14 (14号星期五的杰森)
看板Python
标题[问题] dataframe使用replace的疑问
时间Sun Jun 28 13:00:24 2020
各位版友好
不才小弟这边有个问题想询问,还盼望版友能指点,先谢谢
我有一个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://webptt.com/cn.aspx?n=bbs/Python/M.1593320426.A.AA8.html
1F:→ mthsieh: df['Test'].str.replace('.0', '', regex=False) 06/28 13:10
2F:→ jasonhsu14: 可以问询问一下,这个regex不是预设就False吗? 06/28 13:23
3F:→ 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
4F:推 mthsieh: .apply(lambda x: x.str.replace('.0','',regex=False)) 06/28 14:50
5F:→ mthsieh: 你先弄懂 pandas API reference 吧 06/28 14:51
6F:→ jasonhsu14: 好的~ 谢谢 06/28 16:24
7F:推 gene50814: rstrip(“.0”) 07/05 02:12