我正在尝试找到将格式化数据写入.csv甚至.txt文件的最佳方法。我正在使用熊猫这样做。但是,输出不是我想要的方式。例如,我希望数据与标题对齐,因为我将输出超过30个不同的列。目前,编写代码的方式,它输出的数据很好,但数据值与标题不对齐。任何帮助都将不胜感激。
以下是我编写的一些示例代码来测试它:
import pandas as pd
import numpy as np
data={'dpr_NS_corZFac': [np.nan, np.nan, 35.736231803894043, 36.331412792205811,
35.694644451141357, 36.576189994812012, 37.236752510070801,
38.173699378967285, 38.808069229125977, 36.761274337768555,
30.194313526153564],
'dpr_HS_corZFac': [np.nan, 38.550984859466553, 37.893826961517334, 40.246520042419434,
39.204437732696533, 37.227160930633545, 37.364296913146973,
40.320019721984863, 39.04454231262207, 33.014707565307617,
27.193448543548584] }
# Create a Pandas dataframe from some data.
df = pd.DataFrame(data, columns=['dpr_NS_corZFac','dpr_HS_corZFac'])
df.to_csv('/home/cpabla/data/pandastext.txt', header=True,
index=None, sep="\t", mode='w',na_rep='99.99', float_format='%.2f')
输出到python:
print df
dpr_NS_corZFac dpr_HS_corZFac
0 NaN NaN
1 NaN 38.550985
2 35.736232 37.893827
3 36.331413 40.246520
4 35.694644 39.204438
5 36.576190 37.227161
6 37.236753 37.364297
7 38.173699 40.320020
8 38.808069 39.044542
9 36.761274 33.014708
10 30.194314 27.193449
输出到文本文件:
dpr_NS_corZFac dpr_HS_corZFac
99.99 99.99
99.99 38.55
35.74 37.89
36.33 40.25
35.69 39.20
36.58 37.23
37.24 37.36
38.17 40.32
38.81 39.04
36.76 33.01
30.19 27.19
基本上,我希望输出与python的输出完全相同。
答案 0 :(得分:2)
如果您希望在控制台上获得DataFrame的格式化输出,则可以使用df.__repr__()
写入您的txt。
with open('/home/cpabla/data/pandastext.txt', 'w') as fi:
fi.write(df.__repr__())
提供类似
的文本文件 dpr_NS_corZFac dpr_HS_corZFac
0 NaN NaN
1 NaN 38.550985
2 35.736232 37.893827
3 36.331413 40.246520
4 35.694644 39.204438
5 36.576190 37.227161
6 37.236753 37.364297
7 38.173699 40.320020
8 38.808069 39.044542
9 36.761274 33.014708
10 30.194314 27.193449
然而,如果您的DataFrame足够大,这将涉及您的DataFrame的一些强制以满足您的文本文件规范,并可能涉及您的表示设置。