Python脚本读取CSV:获取最大speed对应name的问题(mph单位干扰)
解决带单位的speed列最大值对应name问题
问题出在speed列的值是带mph后缀的字符串,无法直接进行数值比较,需要先清洗该列提取纯数值,再进行后续操作。以下是两种可行的修改方案:
方案一:移除后缀转数值
直接去掉mph后缀后转换为浮点型:
import pandas as pd df = pd.read_csv('cars.csv') # 处理speed列,移除mph后缀并转为浮点型 df['speed_num'] = df['speed'].str.replace('mph', '').astype(float) # 找到数值最大的行对应的name max_speed_name = df.loc[df['speed_num'].idxmax(), 'name'] print(max_speed_name)
方案二:正则提取数字(更稳妥)
用正则表达式提取字符串中的数字部分,避免因格式变化导致的错误:
import pandas as pd df = pd.read_csv('cars.csv') # 提取speed列中的浮点数字部分,转为数值类型 df['speed_num'] = df['speed'].str.extract(r'(\d+\.\d+)').astype(float) # 获取对应name值 max_speed_name = df.loc[df['speed_num'].idxmax(), 'name'] print(max_speed_name)
两种方案都会生成纯数值的辅助列speed_num,通过它就能正确找到最大速度对应的name,运行后都会输出mercedes。
内容的提问来源于stack exchange,提问作者user2320010
相关产品推荐
相关产品推荐

