当前位置: 首页 > 知识库问答 >
问题:

如何将数据帧从堆栈溢出复制/粘贴到Python中

微生嘉
2023-03-14

在问答中,用户经常发布一个示例DataFrame,其问答可用于:

In []: x
Out[]: 
   bar  foo
0    4    1
1    5    2
2    6    3

能够将这个DataFrame放入我的Python解释器中会非常有用,这样我就可以开始调试这个问题,或者测试答案。

我该怎么做呢?

共有3个答案

许远航
2023-03-14

如果您是从CSV文件复制粘贴,该文件具有以下标准条目:

2016,10,M,0600,0610,13,1020,24
2016,3,F,0300,0330,21,6312,1
2015,4,M,0800,0830,8,7112,30
2015,10,M,0800,0810,19,0125,1
2016,8,M,1500,1510,21,0910,2
2015,10,F,0800,0810,3,8413,5

df =pd.read_clipboard(sep=",", header=None)
df.rename(columns={0: "Name0", 1: "Name1",2:"Name2",3:"Name3",4:"Name4",5:"Name5",6:"Name6",7:"Name7",8:"Name8"})

将为您提供正确定义的数据帧。

雍飞雨
2023-03-14

pd。read_clipboard()很漂亮。但是,如果您正在脚本或笔记本中编写代码(并且您希望您的代码在将来能够正常工作),那么这不是一个很好的选择。以下是将数据帧的输出复制/粘贴到新数据帧对象中的另一种方法,可确保df比剪贴板的内容更有效:

# py3 only, see below for py2
import pandas as pd
from io import StringIO

d = '''0   1   2   3   4
A   Y   N   N   Y
B   N   Y   N   N
C   N   N   N   N
D   Y   Y   N   Y
E   N   Y   Y   Y
F   Y   Y   N   Y
G   Y   N   N   Y'''

df = pd.read_csv(StringIO(d), sep='\s+')

几点注意事项:

  • 三重引号字符串保留输出中的换行符

以上答案仅适用于Python3。如果您在Python 2中陷入困境,请替换导入行:

from io import StringIO

取而代之的是:

from StringIO import StringIO

如果您有一个旧版本的pandasv0.24或更旧版本),有一种简单的方法可以编写上述代码的Py2/Py3兼容版本:

import pandas as pd

d = ...
df = pd.read_csv(pd.compat.StringIO(d), sep='\s+')

最新版本的pandas放弃了compat模块以及Python 2支持。

皇甫学海
2023-03-14

熊猫是由真正知道人们想做什么的人写的。

由于版本0.13有一个函数pd。阅读剪贴板,这在让这“正常工作”方面非常有效。

复制并粘贴问题中启动bar foo的代码部分(即DataFrame),并在Python解释器中执行此操作:

In [53]: import pandas as pd
In [54]: df = pd.read_clipboard()

In [55]: df
Out[55]: 
   bar  foo
0    4    1
1    5    2
2    6    3
  • 不要将iPython包含在或Out中,否则它将不起作用

试试这个:

                      0         1         2
level1 level2                              
foo    a       0.518444  0.239354  0.364764
       b       0.377863  0.912586  0.760612
bar    a       0.086825  0.118280  0.592211

这根本不起作用,或者:

              0         1         2
foo a  0.859630  0.399901  0.052504
    b  0.231838  0.863228  0.017451
bar a  0.422231  0.307960  0.801993

这工作,但返回的东西完全不正确!

 类似资料:
  • 问题内容: 在问题和答案,用户经常发布一个例子,他们的提问/回答与工作: 能够将其放入我的Python解释器中真的很有用,这样我就可以开始调试问题或测试答案了。 我怎样才能做到这一点? 问题答案: 熊猫是由真正了解人们想要做什么的人撰写的。 从版本开始,就有一个功能在使这个“正常工作”方面异常有效。 在开始的问题中复制并粘贴部分代码(即DataFrame),然后在Python解释器中执行以下操作:

  • 问题内容: 我的.emacs中有(cua-mode t),因此Cc是复制的,而Cv是粘贴的,就像桌面上的其他大多数程序(Ubuntu,Gnome,Linux)一样。但是,Emacs似乎并未与其他程序共享剪贴板/复制缓冲区。 例如,如果我在Firefox中使用Cc,则可以将SCv粘贴到终端中,或者将Cv粘贴到gedit中。但是,如果我在emacs中使用Cv(或Cy),则无法获得从Firefox复制的

  • 我可以使用'yy'和'p'复制并粘贴到我的Vim文件中,但是当我从外部复制一些Python代码并尝试在我的Vim文件中执行'p'时,它只会将最后复制的内容粘贴到我的Vim中。 有没有反正我可以同步我的vim和系统剪贴板??

  • 我有一个执行快速排序的应用程序。在我开始给它一些更大的数字(我第一次得到它是10000000)之前,它工作得很好。我知道是由递归引起的,但我不明白为什么我的应用程序会因此而崩溃。如有任何建议,将不胜感激。这是我的密码:

  • 我可以使vim粘贴从和到系统的剪贴板?

  • 问题内容: 我正在寻找一个如何将文本复制到iOS剪贴板的干净示例,然后可以在其他应用程序中使用/粘贴该文本。 此功能的优点是可以快速复制文本,而无需传统文本复制的标准文本突出显示功能。 我假设键类在其中,但是在它们提供的代码示例中找不到相关的区域。 问题答案: 如果您只需要纯文本,则可以使用属性。它既可读又可写: (从剪贴板中 读取数据时 ,UIPasteboard文档还建议您首先检查一下,“以避