Niespójne pandas wnioskowanie dtype read_csv na kolumnie ciągów w większości liczb całkowitych w ogromnym pliku TSV

Mam plik oddzielony tabulatorami z kolumną, która powinna być interpretowana jako łańcuch, ale wiele wpisów jest liczbami całkowitymi. Przy małych plikach read_csv poprawnie interpretuje kolumnę jako łańcuch po obejrzeniu wartości innych niż całkowite, ale przy większych plikach to nie działa:

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)

wydajność:

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

Co ciekawe, 262144 to moc 2, więc myślę, że wnioskowanie i konwersja odbywają się w kawałkach, ale pomijają niektóre fragmenty.

Jestem pewien, że jest to błąd, ale chciałbym obejść go, który może używać cytowania, chociaż dodanie quoting = csv.QUOTE_NONNUMERIC do czytania i pisania nie rozwiązuje problemu. W idealnej sytuacji mógłbym obejść ten problem, cytując moje dane łańcuchowe i jakoś wymusić pandy, aby nie wnioskowały o dane cytowane.

Korzystanie z pand 0.12.0

questionAnswers(2)

yourAnswerToTheQuestion