使用Python将XLSX工作表转换为CSV的格式问题求助
解决Python读取XLSX指定工作表并转结构化CSV的问题
错误原因分析
- 你用
df1.loc['1:3','D']报错的核心问题:loc是标签索引,Pandas默认行索引是从0开始的整数,不是Excel的1-based行号,所以'1:3'这个标签不存在。- 列参数用
'D'是Excel的列字母,但如果你的工作表第一行是Author_Name这类表头,Pandas会把这些作为列名,而非D/E这类标识,自然找不到对应列。
正确实现步骤
1. 读取XLSX指定工作表
确保读取时正确识别表头,默认header=0(即第一行为表头),如果你的表头在其他行,需手动指定header参数。
2. 筛选指定列和行
- 提取指定列:直接用列名列表筛选,比如要保留
Author_Name、Ticker Name,就写df_filtered = df1[['Author_Name', 'Ticker Name']] - 提取指定行:如果是按位置取Excel的第1-3行(对应Pandas的0-2索引),用
iloc(位置索引):df_filtered = df_filtered.iloc[0:3];如果是按行标签筛选,先确认行索引再用loc。
3. 保存为CSV
用to_csv时指定编码、分隔符,去掉索引。
完整代码示例
import pandas as pd # 定义文件路径 xlsx_file = "你的文件路径.xlsx" csv_output_path = "输出的CSV文件路径.csv" # 读取指定工作表 xls = pd.ExcelFile(xlsx_file) df = pd.read_excel(xls, "Sheet1") # 默认header=0,即第一行为表头 # 筛选需要的列(替换成你实际需要的字段名) target_columns = ['Author_Name', 'Ticker Name'] df_filtered = df[target_columns] # 如果需要筛选指定行,比如取前3行(对应Excel的第1-3行) # df_filtered = df_filtered.iloc[0:3] # 取消注释启用 # 保存为CSV df_filtered.to_csv(csv_output_path, sep=',', encoding='utf-8', index=False)
额外注意事项
- 如果你的Excel表头不是第一行,比如在第2行,读取时要加
header=1:pd.read_excel(xls, "Sheet1", header=1) - 如果Excel里有合并单元格、空行等,建议先清理数据再处理,避免列名识别错误
- 若要按Excel的行号(1-based)筛选,比如取第5到10行,对应Pandas的
iloc[4:10](因为0-based)
内容的提问来源于stack exchange,提问作者Gagan
相关产品推荐
相关产品推荐

