панды читают Excel: не разбирают числа

#python #excel #pandas

#python #excel #pandas

Вопрос:

Я работаю с python pandas и MS Excel для редактирования файла xlsx. Я перебираю между этими программами взад и вперед. Файл содержит несколько столбцов с текстом, который выглядит как числа, например,

введите описание изображения здесь

Если я прочитаю это, я получу

 pd.read_excel ('test.xlsx')
     A
0    1
1  100
  

и

 pd.read_excel ('test.xlsx').dtypes
A    int64
dtype: object
  

Мой вопрос: как можно прочитать текст как текст? Невозможно выполнить обратный анализ после чтения, потому что часть информации (т. Е. начальные нули) теряется при преобразовании в число.

Спасибо за вашу помощь.

Комментарии:

1. Работать с csv было бы легко. Есть ли причина только для файла Excel?

2. Потому что у меня было множество проблем с разделением csv между Excel и python, в частности, если некоторые ячейки содержат символы, отличные от ascii. С файлами xls или xlsx эта проблема с кодировкой символов не существует.

Ответ №1:

Вы можете обойти известную проблему (при условии, что вам известно имя столбца), используя параметр ‘converters’:

 >>> pd.read_excel('test.xlsx', converters={'A': str})
     A
0  001
1  100
>>> pd.read_excel('test.xlsx', converters={'A': str}).dtypes
A    object
dtype: object
  

Комментарии:

1. Начиная с pandas 0.20, вы можете напрямую управлять dtypes.

2. возможно ли преобразовать индекс столбца 0: 5?

Ответ №2:

Согласно этой проблеме, это известная проблема с pandas.

Комментарии:

1. Спасибо, что приняли мой ответ (для меня это впервые :). Вы упоминаете о проблемах с кодировкой CSV. Вы должны спросить об этом, потому что я думаю, что они разрешимы.

Ответ №3:

если вы можете преобразовать файл в CSV, dtype =str должен работать.

 pd.read_csv('test.csv', dtype=str)
  

Источник:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html