![](/img/trans.png)
[英]How can I copy DataFrames with datetimes from Stack Overflow into Python?
[英]How to copy/paste DataFrame from Stack Overflow into Python
Pandas 是由真正知道人们想要做什么的人编写的。
从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
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
这根本不起作用,或者:
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
哪个有效,但返回的东西完全不正确!
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+')
一些注意事项:
StringIO
将输出包装在read_csv
需要的类似文件的对象中。sep
设置为\\s+
使得每个连续的空白块都被视为单个分隔符。上面的答案仅适用于 Python 3。 如果您被困在 Python 2 中,请替换导入行:
from io import StringIO
相反:
from StringIO import StringIO
如果你有一个旧版本的pandas
( v0.24
以上)有一个简单的方法来写上面的代码的的Py2 / PY3兼容的版本:
import pandas as pd
d = ...
df = pd.read_csv(pd.compat.StringIO(d), sep='\s+')
最新版本的pandas
已经删除了compat
模块以及 Python 2 支持。
如果您从 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"})
将为您提供正确定义的熊猫数据框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.