【发布时间】:2018-11-06 01:06:20
【问题描述】:
我正在使用此代码将数据框保存到 excel:
writer = pd.ExcelWriter(self.file_name, engine='openpyxl')
writer.book = workbook
writer.sheets = dict((ws.title, ws) for ws in workbook.worksheets)
df.to_excel(writer, sheet_name=sheet_name, columns=columns, header=True, index=False, startrow=11, startcol=0)
writer.save()
不幸的是,任何具有大 int64 dtype 的列都看起来像这样:
在 Pandas 中,我通过执行以下操作来抑制科学记数法:
pd.set_option('display.float_format', lambda x: '%.f' % x)
pd.set_option('display.precision', 0)
所以当我打印数据框时,int64 列看起来像这样:
我尝试将列转换为 str 类型,如下所示:
def convert_int_cols_to_str(df):
dtypes = df.dtypes
for col, dtype in dtypes.iteritems():
if dtype == 'int64':
df[col] = df[col].astype(str)
在此应用后,这些列的 dtypes 显示为 object 而不是 int64,但在 Excel 中仍以科学记数法显示。 任何有关如何避免这种情况的想法将不胜感激!
以下是我正在使用的相关包的版本:
openpyxl==2.5.9
pandas==0.20.3
【问题讨论】: