Панды читают Excel и сохраняют нули после знаков доллара

панды == 0.25.3 питон 3.7

У меня есть электронная таблица Microsoft Excel, которую я хочу прочитать в пандах. В настоящее время, когда я беру ячейку с дробной валютой, оканчивающейся на 0 (например, 12,50), вывод в пандах равен 12,5. Я хочу, чтобы это работало в любой ячейке, в которой это происходит (например, я не буду знать ячейку заранее).

В excel число выглядит как $12.50 в ячейке. Когда я использую pandas read_excel, вывод равен 12.5. Он теряет как знак доллара, так и конечный ноль. В строке формата выше я вижу 12.5, так что, возможно, это проблема Excel, а не проблема панд.

Я подумал, что если бы он сохранил знак доллара, то я мог бы просмотреть электронную таблицу и взять все записи, начинающиеся со знака доллара, и отформатировать их так, чтобы они заканчивались двумя нулями в конце.

Клетка:

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

Код:

import pandas as pd
df = pd.read_excel('test.xlsx')
print(df)
print(df.dtypes)

Панды:

amount 
 500.0 
2217.5

Кто-нибудь еще сталкивался с этой проблемой?

Спасибо


person Micah Pearce    schedule 13.01.2020    source источник
comment
Вы не знаете единиц столбца? (т.е.: $)   -  person Stephen Rauch    schedule 13.01.2020
comment
int всегда будет сокращать конечный ноль. Вы можете попробовать читать столбцы как string Попробуйте это: df = pd.read_excel('test.xlsx'', dtype=str)   -  person Hayat    schedule 13.01.2020


Ответы (1)


Pandas не может читать числовой формат Excel, однако вы можете использовать библиотеку openpyxlи использовать метод .number_format для чтения форматов и анализа ваших данных в желаемый результат.

from openpyxl import load_workbook
wb = load_workbook(filename = r'..\test.xlsx')
ws = wb['Sheet1']
a2 = ws['A2'].value
a2_num_format = ws['A2'].number_format
print(a2, a2_num_format)

Выход:

500 "$"#,##0.00;[Red]\-"$"#,##0.00
person Freddie Sunday    schedule 13.01.2020