Как изменить форматирование чисел определенных столбцов в таблице Excel? - PullRequest
0 голосов
/ 19 июня 2019

Я хочу удалить форматирование знака доллара, $###,##0.00 и заменить его на #,##0.00 форматирование числа.

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

wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['example']
sheet('E7').number_format = '#,##0.00'

Я ожидал, что на выходе изменится значение на E7 с $ 380,00 на 380,00 , но я получаю TypeError: 'Worksheet' object is not callable и с файлом ничего не происходит.

1 Ответ

0 голосов
/ 19 июня 2019

Для отдельной ячейки:

import re
f_clean = lambda x: re.sub('[$\-,\|]', '', x)
f_float = lambda x: float(x) if x!='' else np.NaN

print(f_float(f_clean('$10,000.00')))
# 10000.0

Для всего столбца:

# Here's a solution I use for large datasets:

import re

def lookup_money(s):
    """
    This is an extremely fast approach to parsing currency to floats.
    For large data, the same currencies are often repeated. Rather than
    re-parse these, we store all unique values, parse them, and
    use a lookup to convert all figures.
    (Should be 10X faster than without lookup dict)
    """
    f_clean = lambda x: re.sub('[$\-,\|]', '', x)
    f_float = lambda x: float(x) if x!='' else np.NaN
    currencies = {curr:f_float(f_convert(curr)) for curr in s.unique()}
    return s.map(currencies)

# apply to some df as such:
# df['curr'] = df['curr'].apply(lookup_money)
...