我有一個選項卡分隔的文件應該被解釋爲一個字符串的列,但許多條目是整數。小文件read_csv正確解釋該列作爲字符串看到一些非整數值之後,但較大的文件,這不工作:熊貓read_csv dtype推斷問題
import pandas as pd
df = pd.DataFrame({'a':['1']*100000 + ['X']*100000 + ['1']*100000, 'b':['b']*300000})
df.to_csv('test', sep='\t', index=False, na_rep='NA')
df2 = pd.read_csv('test', sep='\t')
print df2['a'].unique()
for a in df2['a'][262140:262150]:
print repr(a)
輸出:
['1' 'X' 1]
'1'
'1'
'1'
'1'
1
1
1
1
1
1
有趣262144是2的冪所以我認爲推理和轉換正在發生,但跳過了一些塊。
我相當肯定這是一個錯誤,但想周圍的工作,也許用報價,雖然加入 報價= csv.QUOTE_NONNUMERIC 閱讀和寫作不解決問題。理想情況下,我可以通過引用字符串數據來解決此問題,並以某種方式強制大熊貓不對引用數據進行任何推理。
使用熊貓0.12.0
[docs](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html)使它看起來像這樣會工作:'pd.read_csv(' test',sep ='\ t',轉換器= {'a':str})''。 –
@StevenRumbalski它完全沒有!你應該添加這個答案! –
@AndyHayden:謝謝 - 已完成。 –