Настройка формата чисел по умолчанию при записи в Excel из Pandas - PullRequest
0 голосов
/ 27 июня 2018

Я хочу установить формат чисел по умолчанию при записи в Excel из кадра данных Pandas. Возможно ли это?

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

writer = pd.ExcelWriter(f'{file_variable}.xlsx', engine='xlsxwriter',datetime_format='MM/DD/YYYY')

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

Ответы [ 2 ]

0 голосов
/ 09 июля 2018

Для чего это стоит, и поскольку вопрос также был помечен для openpyxl, вы также можете редактировать стиль по умолчанию для всей рабочей книги в openpyxl. Это может иметь смысл для числового формата, но может иметь неожиданные последствия, если такие вещи, как размер шрифта, изменяются, поскольку затрагиваются другие элементы графического интерфейса. Следующее должно работать, если используется с осторожностью.

wb._named_styles['Normal'].number_format = '#,##0.00'
0 голосов
/ 28 июня 2018

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

data = {'A Prime': {0: 3.26,  1: 3.24,  2: 3.22,  3: 3.2,  4: 3.18,  5: 3.16,
  6: 3.14,  7: 1.52,  8: 1.5,  9: 1.48,  10: 1.46,  11: 1.44,  12: 1.42},
 'B': {0: 0.16608,  1: 0.16575,  2: 0.1654,  3: 0.16505999999999998,  4: 0.1647,  5: 0.16434,  6: 0.16398,  7: 0.10759,  8: 0.10687,  9: 0.10614000000000001,
  10: 0.10540999999999999,  11: 0.10469,  12: 0.10396}, 'Proto Name': {0: 'Alpha',
  1: 'Alpha',  2: 'Alpha', 3: 'Alpha',  4: 'Alpha',  5: 'Alpha',  6: 'Alpha',  7: 'Bravo',  8: 'Bravo',  9: 'Bravo',  10: 'Bravo',  11: 'Bravo',  12: 'Bravo'}}

import pandas as pd
df = pd.DataFrame(data)


    A Prime B       Proto Name
0   3.26    0.16608 Alpha
1   3.24    0.16575 Alpha
2   3.22    0.16540 Alpha
3   3.20    0.16506 Alpha
4   3.18    0.16470 Alpha
5   3.16    0.16434 Alpha
6   3.14    0.16398 Alpha
7   1.52    0.10759 Bravo
8   1.50    0.10687 Bravo
9   1.48    0.10614 Bravo
10  1.46    0.10541 Bravo
11  1.44    0.10469 Bravo
12  1.42    0.10396 Bravo

writer = pd.ExcelWriter(r'c:\temp\output.xlsx')
# This method will truncate the data past the first decimal point
df.to_excel(writer,'Sheet1',float_format = "%0.1f")
writer.save()

enter image description here

но, увы, это, пожалуй, не все случаи - нет радости, скажем, от больших чисел и разделителя тысяч

df.to_excel(writer,'Sheet1',float_format = ":,")

Однако, похоже, работает следующее

data = {'A Prime': {0: 326000,  1: 3240000}}
df = pd.DataFrame(data)

    A Prime
0   326000
1   3240000

writer = pd.ExcelWriter(r'c:\temp\output.xlsx')
df.to_excel(writer,'Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'num_format': '#,##0.00'})
worksheet.set_column('B', 18, format1)
#Alternatively, you could specify a range of columns with 'B:D' and 18 sets the column width
writer.save()

enter image description here

Все взято отсюда: http://xlsxwriter.readthedocs.io/working_with_pandas.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...