python pandas中如何将dataframe中的一列字符串类型转换为浮点类型?

如图,excel读取进来后发现high和weight这两列数据并不是数字类型而是字符串类型,如何把他们转换为数值并筛选出体重小于70的人,并把这些人从最轻到最重升序排列后导出一个新的excel。

import pandas as pd
# 读取表格
df = pd.read_excel("old.xlsx")
# 强制转换high和weight两列为浮点类型
df[['high','weight']] = df[['high','weight']].astype('float')
# 打印一下看看数据类型是否正确,应为float64
print(df.info())
# 筛选出体重小于70的数据
df = df[df['weight'] < 70.0]
# 将这些数据升序排列
df = df.sort_values(by='weight', ascending=True)
# 最后导出为新的表格
df.to_excel('new.xlsx', encoding='utf8')

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-11
对字符串使用float函数进行转换就好了。s='65.3' m=float(s)追问

那怎么把整列都转换呢

追答

只能是逐个转换,如果你取出的数据是保存在数组的,就对数组每个元素进行转换

第2个回答  2021-12-12
import pandas as pd
pd.read_excel("d:/test.xlsx",dtype={'high':int,'weight':float}).query('wight<70').to_excel('d:/result.xlsx',index=0)
相似回答