如何在Pandas转置DataFrame时去除Unnamed:1多级索引?
解决转置后出现
Unnamed:1索引的问题 问题场景
使用以下代码读取CSV文件并处理:
ldf_raw_data = pd.read_csv(lstr_file_path, index_col=0) ldf_raw_two = (ldf_raw_data.dropna()).T
目标CSV内容如下:
Salary Slip, , Employee Name,Aditi Aggarwal Salary Period,June 2019 Employer Name,Hewlett Packard Enterprise
转置后出现Unnamed:1作为索引,需要移除该索引以得到干净的输出结构。
解决方案
方法1:读取阶段预处理,从根源避免无效列
CSV前两行是无效标题和空行,有效数据为键-值对结构,读取时直接跳过无效行并指定列名,可杜绝Unnamed:1列的生成:
# 跳过前两行,指定有效列名 ldf_raw_data = pd.read_csv(lstr_file_path, skiprows=2, names=['Item', 'Value'], index_col=0) # 直接转置即可得到目标结构 ldf_raw_two = ldf_raw_data.T
方法2:基于现有流程调整,清理多余索引
若需保留原读取逻辑,可在转置后直接清理无效索引:
ldf_raw_data = pd.read_csv(lstr_file_path, index_col=0) # 过滤空行并转置,随后删除Unnamed:1对应的索引行 ldf_raw_two = ldf_raw_data.dropna().T.drop('Unnamed:1', axis=0)
原理说明
原CSV前两行的非标准结构,导致pd.read_csv自动生成了无列名的Unnamed:1列,转置后该列名转化为索引的一部分。通过跳过无效行或转置后删除对应索引,即可得到预期的干净数据结构。
内容的提问来源于stack exchange,提问作者Lav Sharma
相关产品推荐
相关产品推荐

