我正在尝试找到将格式化数据写入 .csv 甚至 .txt 文件的最佳方法。我正在使用 Pandas 来做到这一点。但是,输出不是我想要的方式。例如,我希望数据与标题对齐,因为我将输出 30 多个不同的列。目前,按照代码的编写方式,它可以很好地输出数据,但数据值与 header 不对齐。任何有关此问题的帮助将不胜感激。
这是我编写的一些示例代码来测试这一点:
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 的输出完全相同。
最佳答案
如果您想要在控制台上获得 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 足够大,还可能涉及您的表示设置。
关于python - Pandas DataFrame 到控制台格式的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234487/