如何用Python将CSV中含NaN的字符串温度范围列转为浮点数
处理CSV中温度范围列的平均值转换方案
嘿,作为Python新手,用pandas库来处理整列数据的需求简直再合适不过啦!我给你准备了两种简单易懂的方法,还特意考虑了NaN值的情况:
第一步:先安装pandas(如果还没装的话)
打开终端/命令提示符,运行下面的命令:
pip install pandas
第二步:读取并处理CSV文件
假设你的CSV里存储温度范围的列名叫温度范围,替换成你实际的列名就行,下面是两种实现方式:
方法1:自定义函数(新手友好,逻辑清晰)
这种方法每一步都很直观,适合理解整个处理流程:
import pandas as pd import numpy as np # 读取你的CSV文件,把路径换成你自己的文件路径 df = pd.read_csv("你的温度数据.csv") # 定义一个函数,处理单个温度范围字符串 def get_avg_temp(temp_str): # 先判断是不是NaN值,如果是直接返回NaN if pd.isna(temp_str): return np.nan # 把"20-25"这样的字符串拆分成两个数字 low_temp, high_temp = temp_str.split("-") # 转成浮点数后计算平均值 return (float(low_temp) + float(high_temp)) / 2 # 把函数应用到整列,生成新的"平均温度"列 df["平均温度"] = df["温度范围"].apply(get_avg_temp) # 保存处理后的结果到新CSV df.to_csv("处理后的温度数据.csv", index=False)
方法2:pandas内置字符串方法(更高效,适合大数据量)
如果你的CSV数据量很大,用这种方法速度会更快,而且代码更简洁:
import pandas as pd # 读取CSV文件 df = pd.read_csv("你的温度数据.csv") # 把温度范围列拆分成"低温"和"高温"两列,同时转成浮点数 df[["低温", "高温"]] = df["温度范围"].str.split("-", expand=True).astype(float) # 计算平均值,自动处理NaN值(原单元格是NaN的话,计算后还是NaN) df["平均温度"] = (df["低温"] + df["高温"]) / 2 # 可以删掉临时的"低温""高温"列(可选) df = df.drop(["低温", "高温"], axis=1) # 保存结果 df.to_csv("处理后的温度数据.csv", index=False)
小提示
- 两种方法都会自动保留原数据中的NaN值,不会出现报错的情况
- 记得把代码里的文件路径和列名替换成你自己的实际内容哦
内容的提问来源于stack exchange,提问作者Niranjan A
相关产品推荐
相关产品推荐

