Python 如何将漂亮的打印数据帧读入熊猫数据帧?

Python 如何将漂亮的打印数据帧读入熊猫数据帧?,python,pandas,dataframe,pretty-print,Python,Pandas,Dataframe,Pretty Print,我有一个: 使用,我可以打印它: df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}, index=[0, 1,

我有一个:

使用,我可以打印它:

df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                   'B': ['B0', 'B1', 'B2', 'B3'],
                   'C': ['C0', 'C1', 'C2', 'C3'],
                   'D': ['D0', 'D1', 'D2', 'D3']},
                   index=[0, 1, 2, 3])
结果:

prettyprint=tabulate(df, headers='keys', tablefmt='psql')
print(prettyprint)
将其复制到文本文件:

+----+-----+-----+-----+-----+
|    | A   | B   | C   | D   |
|----+-----+-----+-----+-----|
|  0 | A0  | B0  | C0  | D0  |
|  1 | A1  | B1  | C1  | D1  |
|  2 | A2  | B2  | C2  | D2  |
|  3 | A3  | B3  | C3  | D3  |
+----+-----+-----+-----+-----+

如何将
PrettyPrintOutput.txt
读回到中,而无需手动执行大量文本处理?

一个解决方案是在
pd.read\u csv
/
pd.read\u剪贴板中使用巧妙的关键字参数:

df=pd.read_csv(r'PrettyPrintOutput.txt',sep=''|',comment='+',skiprows=[2],index_col=1)
df=df[[如果“未命名”不在列中,则为df.columns中的列的列]]
我只是将所有以“+”开头的行定义为注释,这样它们就不会被导入。这对第三行没有帮助,第三行必须使用skiprow排除

第二行是必需的,因为使用“|”作为分隔符会得到更多的列。如果您事先知道列名,请使用关键字
usecols
来明确显示

输出:

with open("PrettyPrintOutput.txt","w") as text_file:
    text_file.wite(prettyprint)

它也适用于pd.read\u剪贴板,因为函数接受相同的关键字参数。

也许你可以研究pickle,而不是写入文本文件?是的,这也适用于一般用途。我以上述方式寻找解决方案的一个主要原因是,我经常以类似的方式发布数据帧,并发现很难复制它们。在我看来,漂亮的打印版本的数据帧是一个讨厌的东西(最好只是在没有修饰符的情况下简单地
print
,或者使用
to_string()
方法,以便有人可以使用StringIO进行复制)。对于漂亮的打印,我会复制它们,删除行,然后找到“|”并将其替换为“”。否则,字符串列/列标题上会出现各种各样的空白问题。当然,您可以剥离它,但它最终会成为更多的代码
对象
列,而列标题在这种方法中是有问题的。你需要把它们都脱光。
with open("PrettyPrintOutput.txt","w") as text_file:
    text_file.wite(prettyprint)
       A      B      C      D   
                                
0      A0     B0     C0     D0  
1      A1     B1     C1     D1  
2      A2     B2     C2     D2  
3      A3     B3     C3     D3