#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