首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Excel表中写入多个数据帧

如何在Excel表中写入多个数据帧
EN

Data Science用户
提问于 2019-03-01 05:23:54
回答 4查看 66.5K关注 0票数 12

我有多个具有相同列名的数据帧。我想把它们写在一起,把它们放在一个竖直地堆叠在一起的excel工作表上。在每一个之间,都会有一个占据一排的文本。我就是这么想的。

我尝试了pandas.ExcelWriter()方法,但是每个dataframe都覆盖了工作表中的前一个框架,而不是附加。

请注意,对于不同的数据,我仍然需要多个工作表,但每个工作表上也需要多个数据文件。有可能吗?或者其他可以从熊猫数据中动态生成excel表的python库?

EN

回答 4

Data Science用户

回答已采纳

发布于 2019-03-01 08:56:23

写在同一张纸上的示例:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd

data1 = """
class    precision   recall 
<18      0.0125         12           
18-24    0.0250         16 
25-34    0.00350         4
"""
data2 = """
class    precision   recall 
<18      0               0           
18-24    0.25            6 
25-34    0.35            5
"""

#create 2 df for sample
df1 = pd.read_csv(pd.compat.StringIO(data1), sep='\s+')
df1.name = "Dataframe1"
df2 = pd.read_csv(pd.compat.StringIO(data2), sep='\s+')
df2.name = "Dataframe2"
print(df1);print(df2)

writer = pd.ExcelWriter('e:\\test.xlsx',engine='xlsxwriter')
workbook=writer.book
worksheet=workbook.add_worksheet('Result')
writer.sheets['Result'] = worksheet
worksheet.write_string(0, 0, df1.name)

df1.to_excel(writer,sheet_name='Result',startrow=1 , startcol=0)
worksheet.write_string(df1.shape[0] + 4, 0, df2.name)
df2.to_excel(writer,sheet_name='Result',startrow=df1.shape[0] + 5, startcol=0)
writer.save()

产出:

如果您想用不同的纸张书写:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('e:\\test.xlsx', engine='xlsxwriter')

# Write each dataframe to a different worksheet. you could write different string like above if you want
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')

# Close the Pandas Excel writer and output the Excel file.
writer.save()
票数 16
EN

Data Science用户

发布于 2019-03-01 08:44:48

这里这里到相同工作表的几个数据格式和选定的工作表:

代码语言:javascript
代码运行次数:0
运行
复制
writer = pd.ExcelWriter('pandas_multiple.xlsx', engine='xlsxwriter')

# Position the dataframes in the worksheet.
df1.to_excel(writer, sheet_name='Sheet1')  # Default position, cell A1.
df2.to_excel(writer, sheet_name='Sheet1', startcol=3)
df3.to_excel(writer, sheet_name='Sheet1', startrow=6)

writer.save()
票数 5
EN

Data Science用户

发布于 2020-07-08 09:48:58

下面是一个通用函数,用于将任意数量的Pandas数据写入单个Excel表:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd

def write_dataframes_to_excel_sheet(dataframes, dir, name):
    with pd.ExcelWriter(f'{dir}/{name}.xlsx', engine='xlsxwriter') as writer:
        workbook = writer.book
        worksheet = workbook.add_worksheet('Result')
        writer.sheets['Result'] = worksheet

        COLUMN = 0
        row = 0

        for df in dataframes:
            worksheet.write_string(row, COLUMN, df.name)
            row += 1
            df.to_excel(writer, sheet_name='Result',
                        startrow=row, startcol=COLUMN)
            row += df.shape[0] + 2

下面是一个使用示例:

代码语言:javascript
代码运行次数:0
运行
复制
# Create sample dataframes
df1 = pd.DataFrame([(1, 2, 3), (4, 5, 6)], columns=('A', 'B', 'C'))
df1.name = "Dataframe1"
df2 = pd.DataFrame([(7, 8, 9), (10, 11, 12)], columns=('A', 'B', 'C'))
df2.name = "Dataframe2"
dataframes = (df1, df2)

write_dataframes_to_excel_sheet(dataframes, '/Users/foo/Documents', 'bar')
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/46437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档