使用Pandas将CSV转Excel时表头错位及首行被识别为表头的问题
解决方案:CSV转Excel的表头与格式问题
问题根源
- 首行被识别为表头:
pd.read_csv()默认将文件第一行解析为表头,但你的CSV第一行是id,1,2,3,4,5,并非真正的表头(你的表头是第一列的id/name/age)。 - 格式混乱:代码存在拼写错误(
cvs.writer应为csv.writer),且未导入csv模块;同时Pandas默认按常规表格结构解析你的行式数据,导致布局错乱。
修正后的代码(保持原CSV结构)
如果希望保留id/name/age在同一列的布局,使用以下代码:
import pandas as pd import csv # 补充缺失的模块导入 # 原始数据 id_col = ["id", 1, 2, 3, 4, 5] name_col = ["name", "Salma", "Ahmad", "Manar", "Mustapha", "Zainab"] age_col = ["age", 14, 12, 15, 13, 10] # 创建CSV文件(修复拼写错误,用with语句自动管理文件) csv_path = 'path/csvfile.csv' with open(csv_path, 'w', newline='') as open_csv: writer = csv.writer(open_csv) writer.writerows([id_col, name_col, age_col]) # 转换为Excel:关闭表头自动识别,去掉默认索引列 excel_path = 'path/Excelfile.xlsx' df = pd.read_csv(csv_path, header=None) df.to_excel(excel_path, index=False)
可选:常规表格结构方案
如果你的实际需求是每行对应一条用户记录(列为id/name/age),可以直接用Pandas组织数据并保存,无需手动写CSV:
import pandas as pd # 按记录维度组织数据 data = { "id": [1, 2, 3, 4, 5], "name": ["Salma", "Ahmad", "Manar", "Mustapha", "Zainab"], "age": [14, 12, 15, 13, 10] } # 直接生成Excel(同时可导出CSV) df = pd.DataFrame(data) df.to_excel('path/Excelfile.xlsx', index=False) df.to_csv('path/csvfile.csv', index=False)
内容的提问来源于stack exchange,提问作者FF123456
相关产品推荐
相关产品推荐

