请问numpy或pandas下同样的type,结果为何不同?,numpypandas,这是 知乎上看到的题目,
请问numpy或pandas下同样的type,结果为何不同?,numpypandas,这是 知乎上看到的题目,
这是 知乎上看到的题目,挺有意思的,可还没人回答,搬过来大家看看。
原标题:在numpy或pandas下,同样的type(float16或int16),为啥 0.0/0.0 有时能 =NaN 有时能 =inf?
这个和前面一个问题很像,但是这次重点我想知道,各种情况下输出不同的原因。
请听题:
我有个python pandas的表
time q v k2015-4-1 8:00 0 0 2015-4-1 8:00 16 42 2015-4-1 8:00 14 59 ... ...... ...... ...... ...... ...
Now I want let k=q/v if v!=0 else k=0. This is how I did:
(因为里面有日文在别的col里,所以用的encoding=shift-jis,导致 **type 都是 object**)>>>df['k'] = df['q'].astype(float16) /df['v'].astype(float16)q v k0 0 NaN>>>df['k'][df['v']==0] = 0.0
(更好的方法您能分享吗?)
只有我让 k,q 都是 float16 时, 上面 0/0 is NaN. 可是:
>>>0/np.float64(0) nan>>>df['k'] = df['q'] /df['v'].astype(float16)ZeroDivisionError
也就是 0/float16(0)=nan 但是换到pandas里就不行
再来:
>>> df['k'] = df['q'].astype(int16)/df['v'].astype(int16)q v k0 0 inf>>> np.int64(0)/np.int64(0)nan
也就是 int16(0)/int16(0)=nan 但是换到pandas里就是inf。。。
还没完:
>>>df =pd.DataFrame({'q':[0,16,14],'v':[0,42,59]})>>>df.astype('float64')>>>df['k']=df.q/df.vq v k0 0 inf
也就是把整个dataframe给变float16以后竟然也能出inf。。。
这都是为啥啊?
编橙之家文章,
相关内容
- 以下源码能用Python仿写吗,源码Python仿写,public stati
- Python scrapy xpath过滤器如何按顺序取出文本节点和图片节
- Python模拟登陆请求地址要返回302如何实现,python302,ph
- wxpython获得服务器response有什么方法,wxpythonresponse,打算
- 求Python实现从上下文中判断英文单词是形容词还是名词
- 求python Tkinter在canvas上点击添加图片实现方法,,想要实
- Python nltk中提取名词短语用什么方法,pythonnltk,例如:
- Python BaseHTTPServer发送Cookies原理是?,,小弟最近遇到一个
- Python tkinter读取文件调用openFile函数报错,tkinteropenfil
- 安装nltk出现AssertionError错误是什么问题,nltkassertioner
评论关闭