当前位置: ManBetXapp > 百科 > 科技 >正文

object转integer

人气:309 ℃ /2023-01-14 07:53:17

object怎么转integer呢?不知道的小伙伴来看看小编今天的分享吧!

Object转为Integer有两种方式:

1、使用(Integer)方式,可以兼容为null的情况,不会报错(推荐)

代码:

Integer abc = (Integer) obj;

2、使用parseInt方式,这样的话obj不能为null,否则会报错

这样是将object类型使用toString转为字符串String类型,然后将String类型使用parseInt转为int类型,再通过自动包装将int类型转为Integer类型

代码:

Integer.parseInt(obj.toString());

Integer.parseInt(String.valueof(obj));

拓展资料:

一、Object类介绍

Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗。所有的类,不管是谁,都是从它继承下来的。

二、toString方法介绍

一个字符串和另外一种类型连接的时候,另外一种类型会自动转换成String类型,然后再和字符串连接。基础的数据类型int,float,double转换成字符串比较简单,按照它们的数字转换过来就成了,可以引用类型呢,Personp=newPerson();一个字符串加上这个p,你就不知道要怎么把这个p转换成字符串了,因为这个p是一个引用类型。

三、Integer类概述:

在Java中,可能会使用到int类型的数据,但可能会有所要求:比如只能使用引用数据类型,但是由于int类型是基本数据类型,无法直接使用,所以需要进行包装,这就引入了Integer类,其他基本数据类型的包装类也是这样

Integer 类在对象中包装了一个基本类型 int 的值,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法

以上就是小编今天的分享了,希望可以帮助到大家。

object转integer类型

Pandas中数据类型转换(Object转数值)

  • 使用astype()函数进行强制类型转换
  • 使用pandas提供的函数如to_numeric()、to_datetime()

1.使用astype()函数进行强制类型转换

data['name'].astype('object')

data['name'] = data['name'].astype('name')

当某列原数据类型为字符串,非想转换为数值型就会报错。解决方案如下:

2.to_numeric()、to_datetime()

2.1.to_numeric()

pd.to_numeric(data['某列'], errors='coerce').fillna(0)

参数解释:

arg :(标量,列表,元组,一维数组或系列) 要转换的参数。

errors:{‘ignore’, ‘raise’, ‘coerce’}, 默认为“raise”

如果为“ raise”,则无效地解析将引发异常。

如果为“coerce”,则将无效解析设置为NaN。

如果为“ ignore”,则无效地解析将返回输入。

downcast{'integer','signed','unsigned','float'},默认值 None,如果不是None;

并且数据已成功转换为数字dtype(或者数据是从数字开始的),则根据以下规则将结果数据转换为可能的最小数字dtype:

'integer'或'signed':最小的有符号int dtype(最小值:np.int8)

'unsigned' :最小的无符号int dtype(最小值:np.uint8)

'float' :最小的float dtype(最小值:np.float32)


2.2.to_datetime()

可以把单独的year、month、day三列合并成一个单独的时间戳。

data['new_date'] = pd.to_datetime(data[['day', 'month', 'year']]) #产生一列新数据


to_numeric()存在的问题:

比如业务需要将一个csv读入,然后进行一些处理,比如对多个元素求和、求方差等等。要求忽略非数值型数据,而pandas的忽略数值型是整行整列的忽略,浮点数的问题。

浮点数在计算机中是没有办法完全精确表示的。所以会有保留的精度。

这在调用 pandas的内置方法to_numeric的时候更是凸显了出来:

字符串 2.067 在用该方法转为数值的时候,被认为是浮点型,依照规范,python中的浮点数是保留17位精度,所以可以得到这样的结果。

解决方案

为了保证小数的精度,所以采用了decimal模块的Decimal类。

from Decimal import Decimal

import pandas as pd

import numpy as np

def convert_num(x, fill=None):

x = str(x)

try:

res = Decimal(x)

except Exception:

res = fill if fill else np.NaN

return res

df = pd.DataFrame([['3.517', '1', '2.06789464564654654654646', 2.067, 'sdf']])

df = df.applymap(lambda x: convert_num(x))

[print(data) for data in df.loc[0]]

print(df.iloc[0, 2])

调用的是applymap函数,它与apply函数的区别就是,applymap是针对于每个元素的,而apply是针对于行列级别的。

applymap是只接收一个func,不像apply,后面可以传入该func的参数,所以想给applymap里的func传参,采用的是lambda表达式的写法。


其他用法:Dateframe所有数值翻10倍

df = pd.DataFrame([[1,2,3,4,16],['1','2','3','4','F']],index =['Data1','Data2'])

df.apply(lambda x: x * 10)

搜索更多有关“ object转integer”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
CopyRight © 2008-2024 ManBetXappAll Rights Reserved. 手机版