如何将pandas导出CSV生成的Unnamed: 0列重命名为class?
解决方案
你有两种实现方式,优先选第一种,从生成环节就避免多余的Unnamed: 0列生成:
方式1:导出CSV时直接指定索引列名(推荐)
在调用to_csv方法时新增index_label参数指定索引列的名称,修改你代码里的导出逻辑即可:
import re import pandas as pd import csv # 逐行读取channelNames.txt文件获取分类名称 channel_file = "../input_data/images/channelNames.txt" with open(channel_file, "r") as class_info: lines = class_info.readlines() cls_names = [] # 过滤带"Blank"的行 for l in lines: if re.findall(r"Blank", l): pass else: cls_names.append(l.strip()) # 补充strip去掉每行末尾的换行符,避免数据带多余格式 # 生成classes.csv cls_df = pd.DataFrame(cls_names, columns=["class_name"]) # 新增index_label参数指定索引列名 cls_df.to_csv('classes.csv', index=True, index_label='class') cls_read = pd.read_csv("classes.csv") cls_read.head()
执行后直接就能得到你要的输出效果:
| class | class_name |
|---|---|
| 0 | A |
| 1 | B |
| 2 | C |
| 3 | D |
方式2:已有CSV文件的情况下,读取后重命名列
如果已经生成了CSV文件不想重新导出,读取后直接修改列名即可:
import pandas as pd cls_read = pd.read_csv("classes.csv") # 重命名指定列 cls_read = cls_read.rename(columns={'Unnamed: 0': 'class'}) # 如果需要覆盖保存原文件的话,加下面这行 # cls_read.to_csv('classes.csv', index=False) cls_read.head()
内容的提问来源于stack exchange,提问作者melololo
相关产品推荐
相关产品推荐

