1

多くの固定幅データファイルを読み込み、csvに変換できるPythonスクリプトを設定しようとしています。私はこのようなpandasを使用していますこれを行うには:Python Pandasを使ってデータ型の解釈をしないで固定幅のファイルを読む

pandas.read_fwf('source.txt', colspecs=column_position_length).\ 
     to_csv('output.csv', header=column_name, index=False, encoding='utf-8') 

どこcolumn_position_lengthcolumn_nameは、データを読み書きするために必要な情報を含むリストです。

これらのファイルの中には、テスト回答を表す長い文字列があります。例:333133322122222223133313222222221222111133313333は、多肢選択式テストの正解を表しています。これは数値よりもコードのほうが多いです。私が抱えている問題は、これらの値を浮動小数点として解釈し、これらの値をCSV(3.331333221222221e + 47)に科学記法で書くパンダです。

この問題に関する多くの質問がありましたが、私の問題は解決されませんでした。

  1. Solution 1 - この時点では値はすでに浮動小数点数に変換されているため、これは役に立ちません。
  2. Solution 2 - パンダによると、documentationdtypeは、Pythonのread_fwfの引数としてサポートされていません。
  3. 解決方法3コンバーターを使用する - コンバーターを使用する際の問題は、データ型に変換する列名またはインデックスを指定する必要がありますが、すべての列を文字列として読み取ることです。

2番目のオプションは、すべての列を文字列として読み取っているようですが、残念ながらread_fwfではサポートされていません。助言がありますか?

+2

'dtype'がサポートされています。はい、' object'に設定すると最適な解決策になります。 – DyZ

+0

dtype:列の型名または型 - >型、デフォルトなし データまたは列のデータ型。例えば。 {'a':np.float64、 'b':np.int32}(エンジン= 'python'ではサポートされていません)。 dtypeを保存し、解釈しないためにstrまたはobjectを使用します。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_fwf.html – dselgo

答えて

1

私は解決策を考え出したと思いますが、なぜそれが機能するのかわかりません。列にNaN値(空白行)があったため、Pandasはこれらの値を浮動小数点として解釈していました。パラメータread_fwf()keep_default_na=Falseを追加することで、この問題が解決されました。

keep_default_nadocumentationによるとna_valuesが指定されており、 keep_default_naがFalseしている場合はブール値、デフォルトはTrueデフォルトのNaN値が上書きされ、 そうでない場合は、に追加しています。

私はこの問題がどのように修正されているのかよく分かりません。誰もこれに明快さを加えることができますか?

関連する問題