У меня есть файл с разделителями, содержащий столбец, который следует интерпретировать как строку, но многие из них являются целыми числами. При небольших файлов read_csv правильно интерпретирует столбец как строку после просмотра некоторые не целые значения, но с большими файлами, это не работает:pandas 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 ', converters = {' a ': str}) '. –
@StevenRumbalski и он полностью делает! Вы должны добавить это как ответ! –
@ AndyHayden: Спасибо. –