pandas 字符串转换数字

在数据处理和分析过程中,经常会遇到将字符串转换为数字的需求。特别是在使用pandas进行数据处理时,经常需要将存储为字符串的数据转换为数字类型,以便进行统计分析、可视化等操作。本文将详细介绍如何使用pandas进行字符串到数字的转换。
1. 使用 astype() 方法转换字符串到数字
在pandas中,我们可以使用 astype() 方法将字符串转换为数字类型。astype() 方法可以指定转换为的数据类型,包括整数、浮点数等。下面是一个简单的示例:
import pandas as pd
# 创建一个包含字符串数字的Series
s = pd.Series(['1', '2', '3', '4'])
# 查看s的数据类型
print("转换前的数据类型:", s.dtype)
# 将字符串转换为整数
s = s.astype(int)
# 查看转换后的数据类型
print("转换后的数据类型:", s.dtype)
运行上面的代码,输出如下:
转换前的数据类型: object
转换后的数据类型: int64
可以看到,通过 astype(int) 将字符串转换为整数类型,数据类型从 object 变为了 int64。
2. 使用 to_numeric() 方法转换字符串到数字
除了 astype() 方法外,pandas还提供了 to_numeric() 方法来将字符串转换为数字类型。与 astype() 方法不同的是,to_numeric() 方法可以处理含有混合类型数据的情况,比如含有缺失值的数据。
下面是一个使用 to_numeric() 方法的示例:
# 创建一个包含混合类型数据的Series
s = pd.Series(['1', '2', 'three', '4'])
# 将字符串转换为数字,并设置errors参数处理非数字情况
s = pd.to_numeric(s, errors='coerce')
print(s)
运行上面的代码,输出如下:
0 1.0
1 2.0
2 NaN
3 4.0
dtype: float64
可以看到,在使用 to_numeric() 方法时,通过设置 errors 参数为 ‘coerce’,可以将无法转换为数字的值转换为 NaN。
3. 处理带有单位的字符串数据
在实际数据处理中,有时字符串中含有单位,比如货币符号、百分号等,需要将这些单位去除后转换为数字。这时可以使用字符串的处理方法结合转换方法来实现。
下面是一个处理带有货币符号的字符串的示例:
# 创建一个包含货币符号的Series
s = pd.Series(['100', '200', '300'])
# 去除货币符号,并转换为数字
s = s.str.replace('', '').astype(int)
print(s)
运行上面的代码,输出如下:
0 100
1 200
2 300
dtype: int64
通过 str.replace('$', '') 去除货币符号后,再通过 astype(int) 转换为数字。
4. 批量转换多列数据
在处理数据集时,经常会需要对多列数据进行转换。可以使用 apply() 方法结合 to_numeric() 方法来批量转换多列数据。
下面是一个批量转换多列数据的示例:
# 创建一个包含多列字符串数据的DataFrame
df = pd.DataFrame({'A': ['1', '2', '3'],
'B': ['4', '5', '6'],
'C': ['7', '8', 'nine']})
# 批量转换多列数据为数字类型
df = df.apply(pd.to_numeric, errors='coerce')
print(df)
运行上面的代码,输出如下:
A B C
0 1.0 4.0 7.0
1 2.0 5.0 8.0
2 3.0 6.0 NaN
可以看到,通过 apply(pd.to_numeric, errors='coerce') 可以批量转换多列数据为数字类型,并处理含有非数字的情况。
结论
本文介绍了在pandas中如何将字符串转换为数字类型。通过使用 astype() 方法、to_numeric() 方法以及字符串处理方法,我们可以轻松地实现对字符串数据的转换。在实际数据处理和分析中,灵活运用这些方法,可以高效地处理数据,为进一步分析提供便利。
极客教程