Как сохранить значение со знаками в виде числа из кадра данных после записи в Excel? - PullRequest
1 голос
/ 18 марта 2020

В настоящее время я использую XlsxWriter для вывода кадра данных в файлы Excel. Мой фрейм данных выглядит следующим образом.

Num     Des     price   percentage
321     pencil  $23     24%
452     pen     $12     29%
444     key     $32     33%
111     eraser  $49     14%

И знаки доллара и процента, которые я использовал, представляют собой коды:

df['price'] = df['price'].apply(lambda x: format(x, '.0%')) 
df['percentage'] = df['percentage'].apply(lambda x: format(x, "${:20,.0f}"))

Но после того, как я вывожу фрейм данных в Excel с помощью XlsxWriter, значения со знаками превращаются в строки.

Есть ли способ сохранить тип числа?

1 Ответ

2 голосов
/ 18 марта 2020

Не используйте pandas для форматирования файла, используйте их для того, что у них лучше всего, pandas для обработки данных и xlsxwriter для формата.

Таким образом, ваш код должен выглядеть примерно так this:

import pandas as pd

# Create your dataframe
df = pd.DataFrame({'Num': [321,452,444,111],
                    'Des': ['pencil','pen','key','eraser'],
                    'price': [23,12,32,49],
                    'percentage': [24,29,33,14]})

# Divide by 100 the column with the percentages
df['percentage'] = df['percentage'] / 100

# Pass the df into the xlsxwriter
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']

# Define the formats
cell_format1 = workbook.add_format({'num_format': '$#,##0'})
cell_format2 = workbook.add_format({'num_format': '0%'})

# Set the columns width and format
worksheet.set_column('C:C', 12, cell_format1)
worksheet.set_column('D:D', 12, cell_format2)

# Write the file
writer.save()

Вывод:

enter image description here

Для получения дополнительной информации о классе формата xlsxwriter смотрите здесь В нем действительно есть все, что вам нужно.

...