Python 可复制数据帧表示法

Python 可复制数据帧表示法,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,

有没有一种方法可以获取数据帧的文本表示形式,我可以将其粘贴回repl,但它看起来仍然像一个表?Numpy
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()
的严格反义词@安迪·海登的回答非常好。