pandas.to_numeric(arg, errors='raise', downcast=None) [source]
将参数转换为数字类型。
默认返回dtype
为float64
或int64
, 具体取决于提供的数据。使用downcast
参数获取其他dtype
。
请注意,如果传入非常大的数字,则可能会导致精度损失。由于ndarray的内部限制,如果数字小于-9223372036854775808(np.iinfo(np.int64).min)或大于18446744073709551615(np.iinfo(np.uint64).max)传入,很有可能会将它们转换为float
以便将其存储在ndarray
中。这些警告类似地适用于 Series,因为它在内部利用ndarray。
参数: | arg : (tuple)元组,一维数组(1-d array)或Series errors : 默认为 如果为 则无效的解析将引发异常 如果为 则将无效解析设置为NaN 如果为 则无效的解析将返回输入 downcast :
默认为 如果不是 (或者数据是从数字开始的), 则根据以下规则将结果数据转换为可能的最小数字dtype: 'integer'或'signed': 最小的有符号 'unsigned': 最小的无符号 'float': 最小的 由于此行为与从核心转换为数值的行为是分开的, 因此无论 向下转换期间引发的任何错误都会浮出水面。 此外,仅当结果数据的dtype的大小, 严格大于要强制转换为dtype的dtype时, 才会发生向下转换,因此, 如果检查的所有dtype都不满足该规范, 则不会对该数据执行向下转换。 0.19.0版中的新功能。 |
返回值: | ret : 解析成功时为numeric(数字)。 返回类型取决于输入。 如果为 则为 |
例子
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)