Inconsistente pandas read_csv dtype inference en la mayoría de la columna de cadena entera en un enorme archivo TSV

Tengo un archivo separado por tabulaciones con una columna que debe interpretarse como una cadena, pero muchas de las entradas son enteros. Con archivos pequeños, read_csv interpreta correctamente la columna como una cadena después de ver algunos valores no enteros, pero con archivos más grandes, esto no funciona:

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)

salida:

['1' 'X' 1]
'1'
'1'
'1'
'1'
1
1
1
1
1
1

Es interesante que 262144 es una potencia de 2, por lo que creo que la inferencia y la conversión se están produciendo en partes, pero se está saltando algunas partes.

Estoy bastante seguro de que esto es un error, pero me gustaría una solución alternativa que quizás use comillas, aunque agregar quoting = csv.QUOTE_NONNUMERIC para leer y escribir no soluciona el problema. Idealmente, podría solucionar este problema citando mis datos de cadena y de alguna manera forzar a los pandas a no hacer ninguna inferencia sobre los datos citados.

Utilizando pandas 0.12.0

Respuestas a la pregunta(2)

Su respuesta a la pregunta