我有多个具有相同列名的数据帧。我想把它们写在一起,把它们放在一个竖直地堆叠在一起的excel工作表上。在每一个之间,都会有一个占据一排的文本。我就是这么想的。
我尝试了pandas.ExcelWriter()方法,但是每个dataframe都覆盖了工作表中的前一个框架,而不是附加。
请注意,对于不同的数据,我仍然需要多个工作表,但每个工作表上也需要多个数据文件。有可能吗?或者其他可以从熊猫数据中动态生成excel表的python库?
发布于 2019-03-01 00:56:23
写在同一张纸上的示例:
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()
产出:
如果您想用不同的纸张书写:
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()
发布于 2019-03-01 00:44:48
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()
发布于 2020-07-08 01:48:58
下面是一个通用函数,用于将任意数量的Pandas数据写入单个Excel表:
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
下面是一个使用示例:
# 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')
https://datascience.stackexchange.com/questions/46437
复制