You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将CSV中字符串列批量转换为对应数值列?

处理CSV字符串列转数值的高效方法

对于处理大型CSV文件,pandas是最简便高效的选择,比手动用字典循环处理快得多,尤其适合数据量较大的场景。以下是具体实现步骤:

  • 先安装pandas(未安装的话):

    pip install pandas
    
  • 核心代码示例:

    import pandas as pd
    
    # 读取大型CSV,若文件超大可加chunksize参数分块处理
    df = pd.read_csv('your_factory_data.csv')
    
    # 自动将Factories列的唯一字符串映射为递增数值,默认从0开始
    df['NumValues'], factory_to_num = pd.factorize(df['Factories'])
    
    # 若需要数值从1开始(和你的示例一致),直接加1即可
    df['NumValues'] += 1
    
    # 保存处理后的文件
    df.to_csv('processed_factory_data.csv', index=False)
    

为什么这个方法更优?

  • 无需手动构建字典:factorize会自动识别所有唯一的工厂名称,省去逐个添加键值对的麻烦
  • 效率极高:基于numpy的向量化操作,比Python循环遍历字典快几个数量级,适合大型数据集
  • 可追溯映射关系:返回的factory_to_num是一个数组,能查看每个工厂对应的数值(比如factory_to_num[0]对应数值1,以此类推)

如果需要自定义特定工厂的数值(比如不是按出现顺序递增),也可以用replace方法结合自动生成的字典:

# 先获取唯一工厂列表,手动指定映射(示例)
factory_map = {name: idx+1 for idx, name in enumerate(df['Factories'].unique())}
# 这里可以修改factory_map里的数值,比如把FactoryC设为5
factory_map['FactoryC'] = 5

# 替换列值
df['NumValues'] = df['Factories'].replace(factory_map)

内容的提问来源于stack exchange,提问作者random123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:45:48