Pandas DataFrame以控制台格式转换为CSV

时间:2017-02-14 19:21:39

标签: python csv pandas dataframe

我正在尝试找到将格式化数据写入.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的输出完全相同。

1 个答案:

答案 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的一些强制以满足您的文本文件规范,并可能涉及您的表示设置。

相关问题