基本
可以使用 pandas
库中的 ExcelWriter
来将多个 DataFrame 写入同一个 Excel 文件的不同 sheet 中。下面是一个示例代码,演示了如何将几个 DataFrame 输出到同一个 Excel 文件的不同 sheet:
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
df3 = pd.DataFrame({'E': [13, 14, 15], 'F': [16, 17, 18]})
# 将DataFrame写入同一个xlsx文件的不同sheet
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
df3.to_excel(writer, sheet_name='Sheet3')
这个示例代码中,创建了三个 DataFrame df1
、df2
和 df3
,然后使用 pd.ExcelWriter
打开一个新的 Excel 文件 output.xlsx
。在 with
语句块内,调用 to_excel
方法将每个 DataFrame 写入不同的 sheet 中。sheet_name
参数指定每个 DataFrame 写入的 sheet 名称。
这样就可以将多个 DataFrame 写入同一个 Excel 文件的不同 sheet 中了。生成的xslx文件效果如图:
修改每行的第一列
如果你想要在每个 sheet 中的每行第一列设置特定的数字,可以在将 DataFrame 写入 Excel 文件之前修改 DataFrame。以下是一个示例代码,演示如何在每个 DataFrame 中的第一列添加一个特定的数字,然后将这些 DataFrame 写入同一个 Excel 文件的不同 sheet 中:
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
df3 = pd.DataFrame({'E': [13, 14, 15], 'F': [16, 17, 18]})
# 设置每行的第一列数字
df1.insert(0, 'Index', range(1, len(df1) + 1))
df2.insert(0, 'Index', range(1, len(df2) + 1))
df3.insert(0, 'Index', range(1, len(df3) + 1))
# 将DataFrame写入同一个xlsx文件的不同sheet
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
df3.to_excel(writer, sheet_name='Sheet3', index=False)
在这个示例中,insert
方法在每个 DataFrame 的第一列插入了一个名为 Index
的列,并为其赋值为 1 到 DataFrame 行数的范围。然后,将这些修改后的 DataFrame 写入 Excel 文件的不同 sheet 中。
具体说明如下:
- 使用
insert
方法在 DataFrame 的第 0 列插入一个新列,并将其命名为Index
。 - 使用
range
函数生成从 1 到 DataFrame 行数的数字序列。 - 将修改后的 DataFrame 写入 Excel 文件,每个 DataFrame 在不同的 sheet 中,且不包含默认的索引列(通过设置
index=False
参数)。
这样,输出的 Excel 文件中的每个 sheet 将会有一列名为 Index
的第一列,其中包含特定的数字序列。效果如图,可以看到,相比之前而言,第一列被改名为了“Index”,且其中的数字都比原来的下标+1:
修改Index列的标题
只需要修改pandas.DataFrame.insert
方法的第二个参数。
如果要修改第一列的标题,可以在将 DataFrame 写入 Excel 文件之前更改列名。下面是一个示例代码,演示如何将每个 DataFrame 的第一列标题设置为自定义标题,并将这些 DataFrame 写入同一个 Excel 文件的不同 sheet 中:
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
df3 = pd.DataFrame({'E': [13, 14, 15], 'F': [16, 17, 18]})
# 设置每行的第一列数字
df1.insert(0, 'CustomIndex', range(1, len(df1) + 1))
df2.insert(0, 'CustomIndex', range(1, len(df2) + 1))
df3.insert(0, 'CustomIndex', range(1, len(df3) + 1))
# 将DataFrame写入同一个xlsx文件的不同sheet
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
df3.to_excel(writer, sheet_name='Sheet3', index=False)
在这个示例中,insert
方法在每个 DataFrame 的第一列插入了一个名为 CustomIndex
的列,并为其赋值为 1 到 DataFrame 行数的范围。然后,将这些修改后的 DataFrame 写入 Excel 文件的不同 sheet 中。
具体步骤如下:
- 使用
insert
方法在 DataFrame 的第 0 列插入一个新列,并将其命名为CustomIndex
。 - 使用
range
函数生成从 1 到 DataFrame 行数的数字序列。 - 将修改后的 DataFrame 写入 Excel 文件的不同 sheet 中,且不包含默认的索引列(通过设置
index=False
参数)。
这样,输出的 Excel 文件中的每个 sheet 将会有一列名为 CustomIndex
的第一列,其中包含特定的数字序列。你可以根据需要将 CustomIndex
更改为任何你想要的标题。效果如图: