Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x “转换为Excel”;日期“;使用python和html表格中的另一种日期格式格式化(在Excel文件中)_Python 3.x_Pandas_Datetime - Fatal编程技术网

Python 3.x “转换为Excel”;日期“;使用python和html表格中的另一种日期格式格式化(在Excel文件中)

Python 3.x “转换为Excel”;日期“;使用python和html表格中的另一种日期格式格式化(在Excel文件中),python-3.x,pandas,datetime,Python 3.x,Pandas,Datetime,我是python新手,正在探索使用它从excel获取数据,并找到了pandas库来获取数据 我需要从网站上的HTML表格中获取费率。 然后将其转储到excel文件中。 我正在使用Python 我使用了以下代码 import pandas as pd from datetime import datetime import lxml as lx import openpyxl as oxl url = "https://www.example.com" tables = pd

我是python新手,正在探索使用它从excel获取数据,并找到了pandas库来获取数据

我需要从网站上的HTML表格中获取费率。 然后将其转储到excel文件中。 我正在使用Python 我使用了以下代码

import pandas as pd
from datetime import datetime
import lxml as lx
import openpyxl as oxl
url = "https://www.example.com"

tables = pd.read_html(url)
table = tables[0]
table.to_excel('output.xlsx')
“生效日期”列中的日期为dd mmm yyyy格式

我想将它们转换为dd/mm/yyyy格式

我使用以下代码来转换表

['Effective Date'] = pd.to_datetime(table['Effective Date'],
                                        infer_datetime_format=False, format='%d/%m/%Y', errors='ignore')
但它无法转换列中的日期。请有人给我介绍一下正确的方向好吗

这是完整的代码

import pandas as pd
import html5lib
import datetime
import locale
import pytz
import lxml as lx
import openpyxl as oxl

url = "https://www.rba.gov.au/statistics/cash-rate/"

tables = pd.read_html(url)

table = tables[0]

table['Effective Date'] = pd.to_datetime(table['Effective Date'],
                                        infer_datetime_format=False, format='%d/%m/%Y', errors='ignore')

table.to_excel('rates.xlsx')

您需要使用
pd.ExcelWriter
创建
writer
对象,以便在Excel中更改为日期格式;然而,这个问题有两个不同的方面:

  • 日期列中有非日期值,包括“图例:”、“现金利率降低”、“现金利率提高”和“现金利率不变”
  • 如注释中所述,您必须将
    格式=“%d%b%Y”
    传递到
    pd.to\u datetime()
    ,因为这是您转换的日期格式
  • 您必须传递
    errors='concurve'
    ,才能为不符合指定格式的文件返回
    NaT
  • 对于代码的
    pd.to_datetime()
    行,您必须在末尾添加
    .dt.date
    ,因为我们在稍后创建
    writer
    对象时使用的是
    date\u格式
    参数,而不是
    datetime\u格式
    参数。但是,您也可以排除
    dt.date
    并更改
    datetime\u format
    参数的格式
  • 然后,执行
    table=table.dropna()
    以删除带有
    NaT
  • Pandas不会更改Excel中的日期格式。如果您想这样做,那么您应该使用
    openpyxl
    创建
    writer
    对象并传递
    date\u格式
    。如果有人这样说,您不能简单地执行:
    pd.to_datetime(表['Effective Date'],格式='%d%b%Y',errors='concurve').dt.strftime('%m/%d/%Y')
    .dt.strftime('%d/%m/%Y')
    ,因为这会在EXCEL中创建一个“通用”日期格式
  • 如果不加宽列,输出会很糟糕,所以我也包含了相应的代码。请注意,我在美国地区,因此传递
    d/m/yyyy
    将在Excel中创建一个“自定义”格式
  • 注意:在我的代码中,我必须通过
    m/d/yyyy
    才能在EXCEL中显示“日期”格式。您可以简单地更改为
    date\u format='d/m/yyyy'
    ,因为我的计算机的区域设置与Excel用于“日期”格式的您(美国)不同。

    :



    使用
    ['Effective Date']=pd.to_datetime(表['Effective Date'],格式='%d%b%Y',errors='ignore')
    转换为datetime时,需要传递日期的现有格式,而不是要转换的格式。在excel中,如果用户在其计算机上设置了英国语言环境,则当用户打开excel文件时,日期将自动转换。感谢您的回复@DavidErickson,但这没有帮助。在Excel中,当我在导出后验证日期时,该类别的数据类型是通用的。请参见我的答案。哇,哇。。。。那真是太棒了。。这真的帮了我很大的忙。老实说,我对python和excel操作还不熟悉。有没有办法让我做得更好。非常感谢你的帮助。另外,如果你不介意的话,你能再回答一个问题吗。这解决了我问题的前一半。还有另外一半。。。。如果我有一个带有日期的数据表,我可以比较上述示例中的现金利率,并根据日期应用有效利率,以最高的日期为准。。。基本上,从网站上复制这些数据,并将其放入另一张excel表格中,在放入之前,比较其值,然后将其添加。请继续练习
    xlsxwriter
    openpyxl
    xlwings
    都是在excel文件中使用excel功能(如加宽列、更改字体大小、插入列、公式等)进行操作的好库。
    pandas
    实际上是在数据进入excel之前进行数据争用和操作的好库。但是,如果您想通过python使用excel中的功能,请使用
    xlsxwriter
    openpyxl
    和/或
    xlwings
    @grumpypig。请创建一个新的StackOverFlow问题。你可以参考这个问题作为基础。我相信有人会帮助你的。当新问题出现时,请随时在这里发表评论,但我目前正在做其他事情。非常感谢。请现在检查
    import pandas as pd
    import html5lib
    import datetime
    import locale
    import pytz
    import lxml as lx
    import openpyxl as oxl
    
    url = "https://www.rba.gov.au/statistics/cash-rate/"
    
    tables = pd.read_html(url)
    
    table = tables[0]
    
    table['Effective Date'] = pd.to_datetime(table['Effective Date'], format='%d %b %Y', errors='coerce').dt.date
    table = table.dropna()
    table.to_excel('rates.xlsx')
    
    writer = pd.ExcelWriter("rates.xlsx",
                            engine='xlsxwriter',
                            date_format='m/d/yyyy')
    
    # Convert the dataframe to an XlsxWriter Excel object.
    table.to_excel(writer, sheet_name='Sheet1')
    
    # Get the xlsxwriter workbook and worksheet objects in order to set the column
    # widths, to make the dates clearer.
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    worksheet.set_column('B:E', 20)
    
    # Close the Pandas Excel writer and output the Excel file.
    writer.save()