我試圖設置一個Python腳本,它能夠讀取許多固定寬度的數據文件,然後將它們轉換爲csv。要做到這一點,我使用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_length
和column_name
是包含讀取和寫入數據所需的信息列表。
在這些文件中,我有很長的代表測試答案的數字字符串。例如:333133322122222223133313222222221222111133313333
代表多項選擇測試的正確答案。所以這是一個比數值更多的代碼。我遇到的問題是大熊貓將這些值解釋爲浮點數,然後用科學記數法將這些值寫入csv(3.331333221222221e + 47)。
我發現了很多關於這個問題的問題,但他們沒有完全解決我的問題。
- Solution 1 - 我相信在這一點上的價值已經轉換爲浮動,所以這沒有幫助。
- Solution 2 - 根據大熊貓documentation,
dtype
不支持在Python中作爲read_fwf
的參數。 - 解決方案3使用轉換器 - 使用轉換器的問題是您需要指定要轉換爲數據類型的列名稱或索引,但是我想將所有列讀作字符串。
第二個選項看起來像是以字符串的形式讀取每一列的答案,但不幸的是它不支持read_fwf
。有什麼建議麼?
'dtype' _is_支持,是的,將其設置爲'object'將是最佳解決方案。 – DyZ
dtype:列的類型名稱或字典 - >類型,默認無 數據或列的數據類型。例如。 {'a':np.float64,'b':np.int32}(不支持engine ='python')。使用str或對象來保存並不解釋dtype。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_fwf.html – dselgo