私はパンダを使ってデータフレームを作成し、それをテーブルパッケージとともに.txtファイルに書き出します。しかし、私は.txtテーブルのカラムにを正確にの11文字の幅にする必要があります(これは後で.txtが固定幅カラムだけを読み込むFortranプログラムによって読み込まれるためです)。パンダやテーブルパッケージでは、テーブルの列の幅を設定するオプションはありません。私は約pandas.set_option('display.max_colwidth',100)
読みが、これは唯一の最大幅、ない固定幅を設定し、それがないファイルへの書き込みため、表示ためです。pandas-pythonまたはtabulate:FIXED列幅を設定する方法は?
誰もが幅を設定するオプションを知っていますか?あるいは、これを可能にする別のパッケージを表にすることができますか? @のzipaのANSWERの指示によるもの
SOLUTION:
出力は、幅= 11文字の列に実際に今あるが、右から5番目の列に1本が中断されることを見ている - ので、浮動小数点< 10e + 11は10進表記で表され、指数関数/科学ではありません。これは、STR(x)は、ここで見
によって引き起こされ、右から5番目の列を確認してください。 df.fillna(' ',inplace=True)
:
C_2_ ,nan ,nan ,nan ,nan , C , C ,nan ,nan ,nan ,2.49e-08 ,0.0 ,71600 ,2 ,100 ,6.01e+11 ,-1.0 ,71600 ,2 ,100
CH ,nan ,nan ,nan ,nan , C , H ,nan ,nan ,nan ,3.16e-10 ,0.0 ,33700 ,2 ,100 ,7630000000.0,-1.0 ,33700 ,2 ,100
CN ,nan ,nan ,nan ,nan , C , N ,nan ,nan ,nan ,1e-09 ,0.0 ,71000 ,2 ,100 ,24200000000.0,0.0 ,71000 ,2 ,100
CO ,nan ,nan ,nan ,nan , C , O ,nan ,nan ,nan ,0.000152 ,-3.1 ,12900 ,2 ,100 ,3.67e+15 ,-4.1 ,12900 ,2 ,100
をこの問題を解決するためには、最初に私がbalnk空間に「ナン」を投入しました。次はzipaの後のコメント@続き、彼の提案1行のコードを変更 - 私は、ラムダ関数が取る作られている場合、句とエントリが文字列またはフロートであるかによって異なる動作を持っています
df = df.applymap(lambda x: str(x).ljust(11) if type(x)==str else str('{:.3e}'.format(x)).ljust(11))
そして、これ私の問題を解決! - 次の出力を参照してください。これは何が必要かもしれない、まあ
C2 , , , , , C , C , , , ,2.490e-08 ,0.000e+00 ,7.160e+04 ,2.000e+00 ,1.000e+02 ,6.010e+11 ,-1.000e+00 ,7.160e+04 ,2.000e+00 ,1.000e+02
CH , , , , , C , H , , , ,3.160e-10 ,0.000e+00 ,3.370e+04 ,2.000e+00 ,1.000e+02 ,7.630e+09 ,-1.000e+00 ,3.370e+04 ,2.000e+00 ,1.000e+02
CN , , , , , C , N , , , ,1.000e-09 ,0.000e+00 ,7.100e+04 ,2.000e+00 ,1.000e+02 ,2.420e+10 ,0.000e+00 ,7.100e+04 ,2.000e+00 ,1.000e+02
CO , , , , , C , O , , , ,1.520e-04 ,-3.100e+00 ,1.290e+04 ,2.000e+00 ,1.000e+02 ,3.670e+15 ,-4.100e+00 ,1.290e+04 ,2.000e+00 ,1.000e+02
をこれは、列の初期値として長い間、仕事をしていません文字列です。しかし、いくつかの値は大きなフロートです。そして、あなたの解はすべての浮動小数点<1.0e + 11を小数として表現します。たとえば、7.63e + 09は7630000000.0と表示され、これは列幅の範囲を超えて配置を破棄します。私はその理由は、str(x)で文字列にエントリを回していると思う。私たちはあなたが提案し、まだ**浮動小数点**を使用するマッピングを行うことはできますか?または、ファイルに書き込む前に浮動小数点数に変換できますか? – Nestak
あなたの全体の列が浮動小数点の場合、その列を ''{:.2e}'のようにキャストできますか?format(7630000000.0)'? – zipa
これは解決策だと思いますが、データフレーム全体に約10ダースの列を実装するには多くのコーディングが必要になります。半分は浮動小数点数、半分は文字列数です。私はより簡単な方法を探しています – Nestak