pandas.to_numeric() 是一个用于将数据转换为数值类型(如整数或浮动数)的 Pandas 函数。它能够处理包含数字和非数字值的数据,并根据需要进行转换或错误处理。本文主要介绍一下Pandas中pandas.to_numeric方法的使用。

pandas.to_numeric(arg, errors='raise', downcast=None)          [source]

将参数转换为数字类型。

默认返回dtypefloat64int64, 具体取决于提供的数据。使用downcast参数获取其他dtype

请注意,如果传入非常大的数字,则可能会导致精度损失。由于ndarray的内部限制,如果数字小于-9223372036854775808(np.iinfo(np.int64).min)或大于18446744073709551615(np.iinfo(np.uint64).max)传入,很有可能会将它们转换为float以便将其存储在ndarray中。这些警告类似地适用于 Series,因为它在内部利用ndarray。

参数

arg : scalar(标量),list(列表),

(tuple)元组,一维数组(1-d array)或Series

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

由于此行为与从核心转换为数值的行为是分开的,

因此无论 ‘errors’ 输入的值如何,

向下转换期间引发的任何错误都会浮出水面。

此外,仅当结果数据的dtype的大小,

严格大于要强制转换为dtype的dtype时,

才会发生向下转换,因此,

如果检查的所有dtype都不满足该规范,

则不会对该数据执行向下转换。

0.19.0版中的新功能。

返回值

ret : 解析成功时为numeric(数字)。

返回类型取决于输入。

如果为Series

则为Series,否则为ndarray

例子

1)将 Series 转换为数值

import pandas as pd

data = pd.Series(['1', '2', '3.5', '4', 'not_a_number'])
numeric_data = pd.to_numeric(data, errors='coerce')
print(numeric_data)

2)错误处理

import pandas as pd

# 创建包含数字和字符串的数据
data = ['10', '20', 'abc', '40']

# 使用 pd.to_numeric 转换数据,遇到无法转换的值会引发错误
try:
    numeric_data = pd.to_numeric(data, errors='raise')
    print("转换后的数据:", numeric_data)
except ValueError as e:
    print("发生错误:", e)

3)强制转换为整数或浮动数

import pandas as pd

# 创建一个包含浮动数据的Series
data = pd.Series([1.5, 2.5, 3.5, 4.5])

# 使用 pd.to_numeric() 方法将数据转换为整数,并且下行缩减内存
numeric_data = pd.to_numeric(data, downcast='integer')

# 输出转换后的结果
print(numeric_data)

4)用于 DataFrame

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({
    'a': ['1', '2', '3'],
    'b': ['4.5', 'not_a_number', '6.7']
})

# 将列 'a' 转换为数字
df['a'] = pd.to_numeric(df['a'])

# 将列 'b' 转换为数字,遇到无法转换的值时将其设为 NaN
df['b'] = pd.to_numeric(df['b'], errors='coerce')

# 打印转换后的DataFrame
print(df)

推荐文档

相关文档

大家感兴趣的内容

随机列表