Lon*_*Rob 39 python clipboard pandas
在问题和答案中,用户经常发布DataFrame
他们的问题/答案适用的示例:
In []: x
Out[]:
bar foo
0 4 1
1 5 2
2 6 3
Run Code Online (Sandbox Code Playgroud)
能够将它DataFrame
放入我的Python解释器中是非常有用的,这样我就可以开始调试问题,或者测试答案.
我怎样才能做到这一点?
Lon*_*Rob 47
熊猫是由真正了解人们想做什么的人写的.
从版本开始0.13
,这个功能pd.read_clipboard
在使这个"正常工作"方面非常有效.
将部分代码复制并粘贴到开始的问题中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
Run Code Online (Sandbox Code Playgroud)
In
或其他Out
东西,否则它将无效engine='python'
(请参阅GitHub上的此问题).当命名索引时,'c'引擎当前被破坏.试试这个:
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
Run Code Online (Sandbox Code Playgroud)
这根本不起作用,或者说:
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
Run Code Online (Sandbox Code Playgroud)
哪个有效,但返回的内容完全错误!
tel*_*tel 17
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+')
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
StringIO
将输出包装在一个类似文件的对象中,这read_csv
需要。sep
为\s+
使每个连续的空白块都被视为单个分隔符。上面的答案仅适用于 Python 3。如果您被困在 Python 2 中,请替换导入行:
from io import StringIO
Run Code Online (Sandbox Code Playgroud)
相反:
from StringIO import StringIO
Run Code Online (Sandbox Code Playgroud)
如果您有pandas
(v0.24
或更旧)的旧版本,则有一种简单的方法可以编写上述代码的 Py2/Py3 兼容版本:
import pandas as pd
d = ...
df = pd.read_csv(pd.compat.StringIO(d), sep='\s+')
Run Code Online (Sandbox Code Playgroud)
的最新版本pandas
已删除该compat
模块以及 Python 2 支持。
归档时间: |
|
查看次数: |
6203 次 |
最近记录: |