Python df.to_excel()将数字存储为excel中的文本.如何存储为Value?

glu*_*uc7 6 python excel pandas

我正在通过pd.read_html从谷歌财务中抓取表格数据,然后将这些数据保存到excel df.to_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()
Run Code Online (Sandbox Code Playgroud)

但是,保存到Excel的数字将存储为文本,并且单元格的角落中有一个小的绿色三角形.将这些数据移到excel时,如何将它们存储为实际值而不是文本?

jmc*_*ara 11

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

writer = pd.ExcelWriter('output.xlsx',
                        engine='xlsxwriter',
                        options={'strings_to_numbers': True})
Run Code Online (Sandbox Code Playgroud)

来自文档:

strings_to_numbers:启用该worksheet.write()方法,在可能的情况下,使用字符串将字符串转换为数字,float()以避免出现有关"存储为文本的数字"的Excel警告.

  • 这是实际的解决方案。多谢。我的数据框确实混合了字符串和浮点数,因此该列显然是对象。但我仍然希望 Excel 将数字显示为数字 (3认同)

Par*_*ait 7

考虑将数字列转换为浮点数,因为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()
Run Code Online (Sandbox Code Playgroud)