需要在 Pandas DataFrame 中将字符串转换为浮点数吗?
根据场景,你可以使用以下两种方法之一将字符串转换为 Pandas DataFrame 中的浮点数:
(1) astype(float)
df[
'DataFrame Column'] = df[
'DataFrame Column'].astype(float)
(2) to_numeric
df[
'DataFrame Column'] = pd.to_numeric(df[
'DataFrame Column'],errors='coerce')
在这个简短的指南中,你将看到 3 个场景以及将字符串转换为浮点数的步骤和DataFrame字符串转换为浮点数的方法:
- 对于包含存储为字符串的数值的列
- 对于同时包含数字和非数字值的列
- 对于整个数据帧
为了简单起见,让我们创建一个只有两列的 DataFrame:
Product | Price |
ABC | 250 |
XYZ | 270 |
import pandas as pddata = https://www.lsbin.com/{'Product': [
'ABC','XYZ'],
'Price': [
'250','270']
}df = pd.DataFrame(data)
print (df)
print (df.dtypes)
在 Python 中运行代码,你将看到'Price' 列的数据类型是Object:
Product Price
0ABC250
1XYZ270
Productobject
Priceobject
dtype: object
目标是将“价格”列下的值转换为浮点数。
然后,你可以使用 astype(float)方法执行到浮点数的转换:
df[
'DataFrame Column'] = df[
'DataFrame Column'].astype(float)
在我们示例的上下文中,“DataFrame Column”是“Price”列。因此,DataFrame字符串转换为浮点数示例:
import pandas as pddata = https://www.lsbin.com/{'Product': [
'ABC','XYZ'],
'Price': [
'250','270']
}df = pd.DataFrame(data)
df[
'Price'] = df[
'Price'].astype(float)print (df)
print (df.dtypes)
你现在将看到“价格”列已转换为浮点数:
ProductPrice
0ABC250.0
1XYZ270.0
Productobject
Pricefloat64
dtype: object
场景 2:数字和非数字值
让我们创建一个具有两列(“产品”和“价格”列)的新 DataFrame。只是这一次,“价格”列下的值将包含数字和非数字数据的组合:
Product | Price |
AAA | 250 |
BBB | ABC260 |
CCC | 270 |
DDD | 280XYZ |
import pandas as pddata = https://www.lsbin.com/{'Product': [
'AAA','BBB','CCC','DDD'],
'Price': [
'250','ABC260','270','280XYZ']
}df = pd.DataFrame(data)print (df)
print(df.dtypes)
和以前一样,“价格”列的数据类型是对象:
ProductPrice
0AAA250
1BBBABC260
2CCC270
3DDD280XYZ
Productobject
Priceobject
dtype: object
然后,你可以使用 to_numeric方法将“价格”列下的值转换为浮点数:
df[
'DataFrame Column'] = pd.to_numeric(df[
'DataFrame Column'], errors='coerce')
通过设置 errors='coerce',你会将非数字值转换为NaN。
这是你可以使用的完整代码:
import pandas as pddata = https://www.lsbin.com/{'Product': [
'AAA','BBB','CCC','DDD'],
'Price': [
'250','ABC260','270','280XYZ']
}df = pd.DataFrame(data)
df[
'Price'] = pd.to_numeric(df[
'Price'], errors='coerce')print (df)
print(df.dtypes)
运行代码,你将看到“价格”列现在是一个浮点数:
ProductPrice
0AAA250.0
1BBBNaN
2CCC270.0
3DDDNaN
Productobject
Pricefloat64
dtype: object
为了更进一步,你甚至可以使用df.replace将“NaN”值替换为“0”值:
import pandas as pd
import numpy as npdata = https://www.lsbin.com/{'Product': [
'AAA','BBB','CCC','DDD'],
'Price': [
'250','ABC260','270','280XYZ']
}
df = pd.DataFrame(data)
df [
'Price'] = pd.to_numeric(df[
'Price'], errors='coerce')
df = df.replace(np.nan, 0, regex=True)print (df)
print(df.dtypes)
这是你会得到的:
ProductPrice
0AAA250.0
1BBB0.0
2CCC270.0
3DDD0.0
Productobject
Pricefloat64
dtype: object
场景三:在整个DataFrame下将Strings转化为Floats
Pandas DataFrame将字符串转换为浮点数:对于最后一个场景,让我们创建一个包含 3 列的 DataFrame,其中所有值都将存储为字符串(使用单引号):
import pandas as pddata = https://www.lsbin.com/{'Price_1': [
'300','750','600','770','920'],
'Price_2': [
'250','270','950','580','410'],
'Price_3': [
'530','480','420','290','830']
}df = pd.DataFrame(data)print (df)
print (df.dtypes)
如你所见,DataFrame 中所有列的数据类型都是object:
Price_1 Price_2 Price_3
0300250530
1750270480
2600950420
3770580290
4920410830
Price_1object
Price_2object
Price_3object
dtype: object
DataFrame字符串转换为浮点数的方法 - 然后,你可以添加以下语法将所有值转换为整个DataFrame下的浮点数:
df = df.astype(float)
因此,执行转换的完整 Python 代码,DataFrame字符串转换为浮点数示例如下:
import pandas as pddata = https://www.lsbin.com/{'Price_1': [
'300','750','600','770','920'],
'Price_2': [
'250','270','950','580','410'],
'Price_3': [
'530','480','420','290','830']
}df = pd.DataFrame(data)
df = df.astype(float)print (df)
print (df.dtypes)
整个 DataFrame 下的所有列现在都是浮动的:
Price_1Price_2Price_3
0300.0250.0530.0
1750.0270.0480.0
2600.0950.0420.0
3770.0580.0290.0
4920.0410.0830.0
Price_1float64
Price_2float64
Price_3float64
dtype: object
【如何在Pandas DataFrame中将字符串转换为浮点数()】你可能还需要查看以下指南以了解其他转换:
- 字符串到整数
- 整数到浮点数
- 整数到字符串
推荐阅读
- 在Pandas中应用LEFT、RIGHT、MID的8种方法
- win7系统恢复窗口动态缩放效果
- win7完全删除删除程序组件小妙招
- win7无线鼠标停顿的具体处理办法
- win7系统启用审核策略监控QQ办法
- win7加锁文件巧妙去锁的办法
- win7查看网站IP地址以防钓鱼网站
- 安装完win7后必须要做3件事
- win7提示“设置windows请勿关机”5种处理办法