如何将数据帧从iPython复制/粘贴到Google表格或Excel中?

时间:2016-01-28 23:33:20

标签: python excel google-sheets ipython ipython-notebook

我最近一直在使用iPython(又名Jupyter)进行数据分析和一些机器学习。但令人头疼的是将笔记本应用程序(浏览器)的结果复制到Excel或Google表格中,这样我就可以操纵结果或与不使用iPython的人分享。

我知道如何将结果转换为csv并保存。但后来我必须挖掘我的电脑,打开结果并将它们粘贴到Excel或Google表格中。这需要太多时间。

只是突出显示结果数据框并复制/粘贴通常会完全混乱格式化,列溢出。 (更不用说在iPython中打印时被截断的长数据帧被截断的问题。)

如何轻松地将iPython结果复制/粘贴到电子表格中?

5 个答案:

答案 0 :(得分:21)

尝试使用to_clipboard()方法。例如,对于数据帧,df: df.to_clipboard()会将所述数据帧复制到剪贴板。然后,您可以将其粘贴到Excel或Google文档中。

答案 1 :(得分:1)

将输出粘贴到 Atom 等 IDE,然后粘贴到 Google Sheets/Excel

答案 2 :(得分:0)

如果您能够通过网址提供csv或html并且可以访问 - 您可以在Google工作表中使用此功能。

=IMPORTDATA("url to the csv/html file")

答案 3 :(得分:0)

根据我的经验,SpreadSheet使用制表(\ t)将单元格和换行符(\ n)分隔为单独的行。

假设我写了一个简单的函数来转换剪贴板数据:

def from_excel_to_list(copy_text):
    """Use it to copy and paste data from SpreadSheet software
    (MS Excel, Libreoffice) and convert to a list
    """
    if isinstance(copy_text, str):
        array = []
        rows = copy_text.split("\n")  # splits rows
        for row in rows:
            if len(row):  # removes empty lines
                array.append(row.split("\t"))
        return array
    else:
        raise TypeError("text must be string")

您可以在Jupiter中定义函数并以这种方式使用它:

在SpreadSheet上使用ctrl-c复制,然后调用from_excel_to_list函数,用双括号内的ctrl-v粘贴数据

my_excel_converted = from_excel_to_list("""Paste here with ctrl-v the text""")

示例

来自ctrl-c的数据:

N   U   tot
1   18,236  18,236
17  20,37   346,29
5   6,318   31,59

调用函数:

from_excel_to_list("""N U   tot
1   18,236  18,236
17  20,37   346,29
5   6,318   31,59
""")

结果是木星:

[['N', 'U', 'tot'],
 ['1', '18,236', '18,236'],
 ['17', '20,37', '346,29'],
 ['5', '6,318', '31,59']]

这是进一步阐述的基础。 可以使用相同的方法来获取字典,namedtuple等。

答案 4 :(得分:0)

如果df.to_clipboard不起作用。这会起作用。

import io
with io.StringIO() as buffer:
    df.to_csv(buffer, sep=' ', index=False)
    print(buffer.getvalue())

然后,您可以复制打印的数据框并将其粘贴到Excel或Google表格中。