pandas 中 df.astype 类型转换报错及正确用法
本文介绍 pandas 中使用 astype 进行强制类型转换时,直接转换含小数的字符串为 int 会引发 ValueError。通过先转为 float 再转 int 的两步法,可正确实现从字符串到整数的转换,避免特殊字符报错。
pandas 类型转换报错示例
直接查看代码示例。
import pandas as pd
from matplotlib import pyplot as plt
from datetime import datetime
filename='sitka_weather_2014.csv'
df=pd.read_csv(filename)
print(df.dtypes)

df[' Min Humidity']=df[' Min Humidity'].astype('float64')
df=df.astype({'Max Humidity':'float64','Max Dew PointF':'float64'})
print('*'*44)
print(df.dtypes)

补充知识:Python pandas 转换数据类型 astype(int) 报错问题
相关代码如下:
解决 astype 转换整数报错的方法
import pandas as pd
a = pd.Series([‘1.11',‘2.22'])
print(a)
a = a.astype(int)
print(a)
执行后出现报错信息。
ValueError: invalid literal for int() with base 10: ‘1.11'
修正后的代码如下:
import pandas as pd
a = pd.Series([‘1.11',‘2.22'])
print(a)
a = a.astype(float).astype(int)
print(a)
运行结果如下:
0 1.11 1 2.22 dtype: object 0 1 1 2 dtype: int32
报错原因分析:
直接使用 astype(int) 将字符串转换为整型时,字符串中的小数点被视为非法字符,从而导致转换失败。
正确的做法是先转换为浮点型数据,astype(int) 随后会将数值作为数字进行转换,从而成功得到整型结果。
以上关于 pandas 强制类型转换 df.astype 的实例分享完毕,希望能为读者提供参考,欢迎继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









