Pandas如何重命名列且不丢失原有列名承载的文本内容?
问题原因
pandas.read_csv()默认将文件第一行识别为列名(表头),所以你文件首行的文本内容会被判定为列名,重命名列时该内容就会被直接覆盖丢失。
解决方法
方法1:读取时直接指定无表头(推荐)
读取文件时添加header=None参数,让pandas不把第一行当作表头,直接识别为数据行,之后再自定义列名即可:
import pandas as pd # 读取文件,header=None表示文件没有表头 df = pd.read_csv("你的文件路径", header=None) # 自定义列名,比如文本列命名为content df.columns = ["content"]
方法2:已读取文件的补救方案
如果已经完成读取不想重新加载文件,可以手动把列名转换为第一行数据,再重新设置列名:
# 将当前列名作为数据插入到第一行 df.loc[-1] = df.columns # 重置索引让插入的行排在最顶部 df = df.sort_index().reset_index(drop=True) # 重命名列 df.columns = ["content"]
额外注意
如果你的文件是纯文本格式,每行对应一条文本数据,没有逗号等分隔符,可以额外添加sep='\n'参数,避免文本内容中的特殊符号被误识别为分隔符,读取更稳妥:
df = pd.read_csv("你的文件路径", header=None, sep="\n", names=["content"])
内容的提问来源于stack exchange,提问作者TrexCodes
相关产品推荐
相关产品推荐

