如何使用Python修改CSV文件中class列的字符串为对应数值?
问题原因
你之前调用的df.rename()方法作用是修改DataFrame的列名或行索引,并非修改列内的单元格数值,因此只会改动列名无法实现你要的行内容替换效果。
实现方案
你可以通过pandas的映射方法直接修改class列的内容,其余列不会受到影响,示例代码如下:
import pandas as pd # 读取原始CSV df = pd.read_csv('data.csv') # 定义类别到数字的映射关系 class_mapping = { 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'O': 6 } # 替换class列内容 df['class'] = df['class'].map(class_mapping) # 输出验证 print(df.head()) # 保存修改后的结果到新CSV,index=False表示不保存行索引 df.to_csv('output.csv', index=False)
补充说明
- 如果你希望
class列中不在映射关系里的数值保持原值,可将map替换为replace方法:df['class'] = df['class'].replace(class_mapping) - 如果类别数量多不需要手动定义映射,想按出现顺序自动编码,可以直接使用
factorize方法自动生成数字编码:df['class'] = pd.factorize(df['class'])[0]
内容的提问来源于stack exchange,提问作者Mayama
相关产品推荐
相关产品推荐

