作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有多个使用 Numpy 和 SciPy 处理的文件,但我需要提供一个 Excel 文件。如何有效地将巨大的 numpy 数组复制/粘贴到 Excel?
我尝试转换为 Pandas 的 DataFrame 对象,它具有非常有用的函数 to_clipboard(excel=True)
,但我大部分时间都在将数组转换为 DataFrame。
我不能简单地将数组写入 CSV 文件然后在 excel 中打开它,因为我必须将数组添加到现有文件;使用 xlrd/xlwt 和其他 Excel 工具很难实现。
最佳答案
我最好的解决方案是将数组转换为字符串,然后使用 win32clipboard
将其发送到剪贴板。这不是一个跨平台的解决方案,但话又说回来,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) 测试了这段代码,最大的瓶颈似乎是将数据传递给函数。 (当我在函数的开头添加 print
语句时,我仍然需要等待一段时间才能打印任何内容。)
编辑: 上一段介绍了我在 Python Tools for Visual Studio 中的经验。在这种环境下,打印语句似乎被延迟了。在直接命令行界面中,瓶颈在循环中,如预期的那样。
关于python - 如何将 Numpy 数组粘贴到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22488566/
我是一名优秀的程序员,十分优秀!