Python 可复制数据帧表示法
有没有一种方法可以获取数据帧的文本表示形式,我可以将其粘贴回repl,但它看起来仍然像一个表?NumpyPython 可复制数据帧表示法,python,pandas,Python,Pandas,有没有一种方法可以获取数据帧的文本表示形式,我可以将其粘贴回repl,但它看起来仍然像一个表?Numpyrepr处理得很好,我说的是: > df A B C i 0 3 1 8 1 3 1 6 2 7 4 6 > df.to_python() DataFrame( columns=['i', 'A', 'B', 'C'], data = [[ 0, 30, 1, 8], [ 1, 3, 1,
repr
处理得很好,我说的是:
> df
A B C
i
0 3 1 8
1 3 1 6
2 7 4 6
> df.to_python()
DataFrame(
columns=['i', 'A', 'B', 'C'],
data = [[ 0, 30, 1, 8],
[ 1, 3, 1, 6],
[ 2, 7, 4, 6]]
).set_index('i')
这似乎对堆栈溢出特别有用,但我经常发现自己需要共享小数据帧,如果可能的话,我会喜欢它
编辑:我知道关于到_csv
和到_dict
等等,我想要的是一种精确地再现数据帧的方法,该数据帧也可以作为表读取。这似乎没有一个最新的答案(虽然我很想看到pandas添加它),但我认为我可以让pd.read\u剪贴板('\s\s+')
在我95%的使用中起作用。df.to\u dict()
会让你接近,尽管你确实丢失了索引名:
df.to_dict()
Out[5]: {'A': {0: 30, 1: 3, 2: 7}, 'B': {0: 1, 1: 1, 2: 4}, 'C': {0: 8, 1: 6, 2: 6}}
df_copy = pd.DataFrame(df.to_dict())
df_copy
Out[7]:
A B C
0 30 1 8
1 3 1 6
2 7 4 6
StringIO告诉python将字符串视为类似文件的对象,这允许您使用下面的read_csv方法示例
df = """ A B C
i
0 3 1 8
1 3 1 6
2 7 4 6"""#this is equivalent to str(df) or what happens when you use print df
df = pd.read_csv(StringIO.StringIO(df),sep="\s*",engine = 'python')
我问了一个类似但范围更广的问题,得到了一个很好的答案,但没有什么能与Numpy的
repr
或R的dput()
@Marius相媲美。基于这一点,似乎很多文本表都可以通过pd.read_剪贴板('\s+')
,轻松阅读,虽然它可以丢弃一些信息,并且不是df.to_clipboard()
的严格反义词@安迪·海登的回答非常好。