关于将数据帧数据写入文件,我有两个问题:
我的程序生成数据帧的许多分组行的摘要统计信息,并将它们保存到StringIO缓冲区,该缓冲区在完成时写入我的output.csv文件。我有一种感觉,pd.concat会更适合,但我无法让它工作。我有机会尝试添加一段代码,希望有人可以解释如何正确连接,我认为这将解决我的问题。
话虽这么说,我的计划有效,而且比我要求的要多。但令我烦恼的是,CSV文件最终会为写入缓冲区的每个摘要统计数据帧重复相同的列标签,偶然也会重复到我的CSV文件中。有没有办法只写一次列标签,避免多个重复的标签行?
我的第二个问题是写入Excel以跳过不必要的复制和粘贴。就像我以前的问题一样,这只是一个小小的障碍,但仍然让我感到困惑,因为我想以正确的方式做事。问题是我希望所有帧都写在同一张纸上。为了避免覆盖相同的数据,必须使用缓冲区来存储数据直到结束。在我的特定情况下,没有一个文档似乎有用。我设计了一个解决方法:xlwt到缓冲区 - > output.write(buffer.getvalue()) - > pd.to_csv(输出)然后通过pd.read_csv重新导入同一个文件,最后添加另一个将数据帧写入Excel的编写器。完成所有这些工作之后,我结束了只是简单的CSV,因为Excel编写器实际上放大了重复行的丑陋。有关如何更好地处理缓冲区问题的任何建议,因为我更喜欢Excel编写器的简化和控制到CSV输出。
很抱歉没有任何上下文代码。没有它,我尽力解释。如有必要,我可以在获得免费机会时添加代码。
答案 0 :(得分:3)
我同意连接数据帧可能是更好的解决方案。您可能应该使用一些示例代码/数据框专门针对该问题提出问题。
对于第二个问题,您可以使用startrow
和startcol
参数在Excel工作表中放置数据框。您可以使用header
布尔参数跳过重复的标头,并且可以使用index
布尔参数跳过索引。
例如:
import pandas as pd
# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data': [11, 12, 13, 14]})
df2 = pd.DataFrame({'Data': [21, 22, 23, 24]})
df3 = pd.DataFrame({'Data': [31, 32, 33, 34]})
df4 = pd.DataFrame({'Data': [41, 42, 43, 44]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_test.xlsx', engine='xlsxwriter')
# Add the first dataframe to the worksheet.
df1.to_excel(writer, sheet_name='Sheet1', index=False)
offset = len(df1) + 1 # Add extra row for column header.
# Add the other dataframes.
for df in (df2, df3, df4):
# Write the datafram without a column header or index.
df.to_excel(writer, sheet_name='Sheet1', startrow=offset,
header=False, index=False)
offset += len(df)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
输出: