如何将Numpy数组粘贴到Excel

我有使用Numpy和SciPy处理的多个文件,但我需要提供一个Excel文件。 我怎样才能有效地复制/粘贴一个巨大的numpy数组到Excel?

我试图转换为Pandas的DataFrame对象,它具有非常有用的函数to_clipboard(excel=True) ,但我花了大部分时间将数组转换为DataFrame。

我不能简单地将数组写入CSV文件,然后在Excel中打开它,因为我必须将数组添加到现有的文件; 很难用xlrd / xlwt和其他Excel工具来实现。

我最好的解决scheme是将数组转换为string,然后使用win32clipboard将其发送到剪贴板。 这不是一个跨平台的解决scheme,但是再一次,Excel在任何平台上都是不可行的。

Excel使用制表符( \t )标记列更改, \r\n表示行更改。

相关的代码将是:

 import win32clipboard as clipboard def toClipboardForExcel(array): """ Copies an array into a string format acceptable by Excel. Columns separated by \t, rows separated by \n """ # Create string from array line_strings = [] for line in array: line_strings.append("\t".join(line.astype(str)).replace("\n","")) array_string = "\r\n".join(line_strings) # Put string into clipboard (open, clear, set, close) clipboard.OpenClipboard() clipboard.EmptyClipboard() clipboard.SetClipboardText(array_string) clipboard.CloseClipboard() 

我已经用形状(1000,10000)的随机数组testing了这个代码,最大的瓶颈似乎是将数据传递给函数。 (当我在函数的开始处添加一个print语句时,在打印任何内容之前,我还是要等一下。)

编辑:上一段涉及我在Python工具Visual Studio的经验。 在这种环境下,印刷语句被延迟了。 在直接的命令行界面中,瓶颈就像预期的那样在循环中。

截至今天,你也可以使用xlwings 。 它是开源的,与Numpy数组和pandasDataFrames完全兼容。

如果我需要处理多个文件加载到python,然后parsing成excel,我可能会使用xlwt一些工具

也就是说,我可以提供我的配方将python数据粘贴到电子表格中,以便进行任何编辑,投诉或反馈。 它不使用第三方库,应该是跨平台的。

你也可以看看pyxll项目。