2017-02-14 15 views
2

書式設定されたデータを.csvファイルまたは.txtファイルに書き込む最良の方法を探しています。私はこれを行うためにパンダを使用しています。しかし、出力は私が望む方法ではありません。たとえば、30以上の異なる列を出力するので、データをヘッダーに合わせる必要があります。現在、コードが書き込まれる方法では、データは正常に出力されますが、データ値はヘッダーと揃っていません。これについての助けに感謝します。コンソール形式のCSVへのPandas DataFrame

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 

出力テキストファイルに:のpythonへ

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') 

出力:ここ

は、私はこれをテストするために書かれているいくつかのサンプルコードです

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 

基本的に、I出力をpythonへの出力とまったく同じにしたい。

+0

固定幅のCSVを書き込もうとしています – Boud

+0

タブのデータは完全には整列しません。パンダがサポートしていない固定幅のファイルを書く必要があります。この問題を回避するには、すべての値を適切かつ均一なサイズの文字列に変換する必要があります。 –

+0

Ooooooo私はこの解決策に行くだろう:http://stackoverflow.com/a/35974742/5014455 –

答えて

1

コンソールで取得した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 

のようなテキストファイルを手渡す、と。

+0

upvotingきちんとしたハック – Boud

+1

@Boud私はPythonのような出力で簡単なテキストファイルが必要なときはいつでも、このハックは便利です:) – miradulo

+0

ええと。これはうまくいきましたが、今では欠けている値がNaNとして表示されています。これらを-99.99のようなものに置き換える方法はありますか? –

関連する問題