我正在使用自定义函数,并尝试将特定格式应用于发送到Excel的输出文件。我希望正/负整数= 1234.34看起来像1,234/(1,234)。我的函数可以工作,但输出是一个字符串,我希望它在excel中显示为整数/浮点数/数字:
def formatter(x):
if x > 0:
return '{0:,.0f}'.format(x)
else:
return '({0:,.0f})'.format(abs(x))
for col in DFstats2.columns[1:]:
DFstats2[col] = DFstats2[col].apply(formatter)
目前,要让Excel将这些数据视为数字,我必须右键选择“转换为数字”,以便对它们进行任何类型的操作。
如有任何指导,我们将不胜感激,谢谢!
发布于 2018-06-20 08:59:11
如果希望Excel将字符串识别为带格式的数字,则必须使用pd.ExcelWriter
格式设置方法。Python字符串格式化只能生成字符串。下面是一个简单的例子:
import pandas as pd
from string import ascii_uppercase
# Create a Pandas dataframe from some data.
df = pd.DataFrame({'Positive': [1024.34, 2024.34, 3024.34, 4024.34],
'Negative': [-1024.34, -2024.34, -3024.34, -4024.34],
'Mixed': [1024.34, -2024.34, 3024.34, -4024.34]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter("column_formats.xlsx", engine='xlsxwriter')
# Connect dataframe to Excel worksheet
df.to_excel(writer, sheet_name='Formatted')
# Make handles for workbook/sheet
workbook = writer.book
worksheet = writer.sheets['Formatted']
# Create positive/negative cell format
pos_neg_fmt = workbook.add_format({'num_format': '#,##0;(#,##0)'})
# Define the worksheet range to apply number format
cols = dict(zip(range(26), ascii_uppercase))
row = len(df)
format_range = '{}{}:{}{}'.format(cols[0], row, cols[len(df.columns)-1], row)
# Apply number formats to specified range
worksheet.set_column(format_range, None, pos_neg_fmt)
writer.save()
ExcelWriter方法为您提供了极大的灵活性,使您能够以特定于Excel的方式格式化数据。如果你愿意,你甚至可以添加条件格式。而且,根据您的要求,您永远不需要接触工作簿。
https://stackoverflow.com/questions/50936284
复制相似问题