如何在pandas中处理含混合类型的CSV列 计算表达式得到整数值
可以实现,你可以选择读取CSV时直接通过转换器处理,或者读入DataFrame后批量处理,两种方案都能直接得到计算后的整数值。
方案1:读取CSV时直接处理
适合数据量不大、需要一步得到结果的场景,通过read_csv的converters参数指定每列的转换逻辑:
import pandas as pd # 表达式计算函数,仅适配加减运算场景 def calc_expr(val): return pd.eval(val) df = pd.read_csv( "你的文件路径.csv", converters={ "column1": calc_expr, "column2": calc_expr }, dtype="int" # 直接指定输出列为整数类型 )
方案2:读入后批量处理
适合大文件场景,性能更优,先读入全量数据再对目标列做转换:
import pandas as pd # 先默认读取CSV,带表达式的列会为object类型 df = pd.read_csv("你的文件路径.csv") # 指定需要处理的列,批量计算 process_cols = ["column1", "column2"] for col in process_cols: df[col] = df[col].apply(pd.eval).astype(int)
注意事项
当前场景只有加减运算,用pd.eval没有安全风险。如果你的实际数据包含其他未知表达式,建议先加一层字符校验,过滤掉数字、+、-之外的非法字符后再计算,避免执行恶意代码。
内容的提问来源于stack exchange,提问作者DP1980
相关产品推荐
相关产品推荐

