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