【Python】DataFrame字符串元素转换为float或int类型
任务简介:DataFrame元素中含有字符串,需要将如'1.5'之类的字符串转换为float类型,即'1.5' -> 1.5。任务说明:使用pandas函数astype('float')时,会出现错误:ValueError: could not convert string to float此时,只能自己写函数来实现上述功能。自定义函数:import pandas as pddef Seri
·
任务简介:
DataFrame元素中含有字符串,需要将如'1.5'
之类的字符串转换为float类型,或者将'55'
之类的字符串转换为int类型,即:'1.5' -> 1.5
,'55' -> 55
。
任务说明:
使用pandas函数astype('float')
时,会出现错误:
ValueError: could not convert string to float
本文通过自定义函数解决:astype('float')
函数could not convert string to float
问题
自定义转换函数:
import pandas as pd
def SeriesFloat(series):
"""
:param series: 输入的series
:return: 元素转换为float或int后的series
"""
length = len(series)
FloatSeries = pd.Series([], dtype='object')
index = 0
for i in range(length):
n = series[i]
# 将可变为float或int类型的元素转换为float或int,不能转换的保留原格式
try:
if '*' in n: # 运算符都需要考虑,我这边数据里只有乘号
FloatSeries[index] = n
else:
FloatSeries[index] = eval(n)
except Exception:
FloatSeries[index] = n
index += 1
return FloatSeries
def DataFrameFloat(dataframe):
"""
:param dataframe: 输入的dataframe
:return: 元素转换为float或int后的dataframe
"""
# 构建与传入dataframe列名相同的dataframe
columns = []
for column in dataframe.columns:
columns.append(column)
FloatDataFrame = pd.DataFrame(columns=columns)
# 将元素转换为float的series赋值到目标dataframe
for i in columns:
series = dataframe[i]
series = SeriesFloat(series)
FloatDataFrame[i] = series
return FloatDataFrame
读取数据,查看前五行:
nodes = pd.read_csv('./data/afv_base.csv')
nodes.head(5)
输出:
查看纯电续航里程这一列的第一条数据:
nodes['纯电续航里程(km)'][0]
输出:
'525'
可以看出输出为字符串类型
调用自定义函数DataFrameFloat()
进行类型转换:
nodes = DataFrameFloat(nodes)
再次查看纯电续航里程这一列的第一条数据:
nodes['纯电续航里程(km)'][0]
输出:
525
OK,任务完成。
更多推荐
已为社区贡献1条内容
所有评论(0)