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

2024-05-21 06:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过pd.read_html从google finance中删除表数据,然后通过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的数字存储为文本,单元格的角上有一个绿色的小三角形。将此数据移到excel时,如何将它们存储为实际值而不是文本?


Tags: to数据https文本comdfreadhtml
3条回答

考虑将数值列转换为浮点数,因为pd.read_html将web数据读取为字符串类型(即对象)。但在转换为浮点之前,需要将连字符替换为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()

除了在创建或使用数据帧时将字符串数据转换为数字的其他解决方案之外,还可以使用xlsxwriter引擎的选项来完成此任务:

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

docs

strings_to_numbers: Enable the worksheet.write() method to convert strings to numbers, where possible, using float() in order to avoid an Excel warning about "Numbers Stored as Text".

您是否验证了要导出的列实际上是python中的数字(int或float)?

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

相关问题 更多 >