Python df.to_excel()将数字作为文本存储在excel中。 如何存储为值?

我通过pd.read_html从谷歌财经刮表数据,然后通过df.to_excel()将该数据保存到Excel中,如下所示:

dfs = pd.read_html('https://www.google.com/finance?q=NASDAQ%3AGOOGL&fstype=ii&ei=9YBMWIiaLo29e83Rr9AM', flavor='html5lib') xlWriter = pd.ExcelWriter(output.xlsx, engine='xlsxwriter') for i, df in enumerate(dfs): df.to_excel(xlWriter, sheet_name='Sheet{}'.format(i)) xlWriter.save() 

但是,保存为excel的数字将作为文本存储在单元格angular落中的绿色小三angular形中。 在将这些数据移到excel中时,我如何将它们存储为实际值而不是文本?

任何帮助表示赞赏。 谢谢!!!

考虑将数字列转换为浮点数,因为pd.read_html以stringtypes(即对象)的pd.read_html读取Web数据。 但在转换为浮点数之前,需要将连字符replace为NaN:

 import pandas as pd import numpy as np dfs = pd.read_html('https://www.google.com/finance?q=NASDAQ%3AGOOGL' + '&fstype=ii&ei=9YBMWIiaLo29e83Rr9AM', flavor='html5lib') xlWriter = pd.ExcelWriter('Output.xlsx', engine='xlsxwriter') workbook = xlWriter.book for i, df in enumerate(dfs): for col in df.columns[1:]: # UPDATE ONLY NUMERIC COLS df.loc[df[col] == '-', col] = np.nan # REPLACE HYPHEN WITH NaNs df[col] = df[col].astype(float) # CONVERT TO FLOAT df.to_excel(xlWriter, sheet_name='Sheet{}'.format(i)) xlWriter.save() 

你有没有确认你输出的列是Python中的实数(int还是float)?

或者,您可以使用= VALUE()函数将文本字段转换为Excel中的数字。

由于pandas0.19,你可以提供参数na_values pd.read_html这将允许pandas正确自动推断浮动types为您的价格列…

以下是这样的样子:

 dfs = pd.read_html( 'https://www.google.com/finance?q=NASDAQ%3AGOOGL&fstype=ii&ei=9YBMWIiaLo29e83Rr9AM', flavor='html5lib', index_col='\nIn Millions of USD (except for per share items)\n', na_values='-' ) xlWriter = pd.ExcelWriter('Output.xlsx', engine='xlsxwriter') for i, df in enumerate(dfs): df.to_excel(xlWriter, sheet_name='Sheet{}'.format(i)) xlWriter.save() 

或者(如果你还没有pandas0.19),我会使用更简单的@ Parfait解决scheme:

 dfs = pd.read_html( 'https://www.google.com/finance?q=NASDAQ%3AGOOGL&fstype=ii&ei=9YBMWIiaLo29e83Rr9AM', flavor='html5lib', index_col='\nIn Millions of USD (except for per share items)\n' ) xlWriter = pd.ExcelWriter('Output.xlsx', engine='xlsxwriter') for i, df in enumerate(dfs): df.mask(df == '-').astype(float).to_excel(xlWriter, sheet_name='Sheet{}'.format(i)) xlWriter.save() 

这第二个解决scheme只适用于正确定义索引列(在.read_html中),如果其中一个(数据)列包含任何不能转换为浮点数的数据,它将以一个ValueError失败。

除了在创build或使用数据xlsxwriter时将string数据转换为数字的其他解决scheme之外,还可以使用xlsxwriter引擎的选项来执行此xlsxwriter

 writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter', options={'strings_to_numbers': True}) 

从文档 :

strings_to_numbers :启用worksheet.write()方法将string转换为数字,如有可能,使用float()以避免有关“存储为文本的数字”的Excel警告。