可复制数据帧表示法

2024-10-02 20:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以得到一个数据帧的文本表示,我可以直接粘贴回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,   6],
        [  2,    7,   4,   6]]
).set_index('i')

这似乎对堆栈溢出特别有用,但我经常发现自己需要共享小数据帧,如果这是可能的话,我会喜欢它。你知道吗

编辑:我知道to_csvto_dict等等,我想要的是一种精确地再现数据帧的方法,它也可以被读取为表。这似乎还没有一个最新的答案(虽然我很想看到熊猫加入),但我想我可以让pd.read_clipboard('\s\s+')在我95%的使用中发挥作用。你知道吗


Tags: columnsto数据方法文本dataframedfdata
2条回答

StringIO告诉python将字符串视为类似文件的对象,这允许您使用下面的read\u 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')

df.to_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

相关问题 更多 >