Python 3.x “转换为Excel”;日期“;使用python和html表格中的另一种日期格式格式化(在Excel文件中)
我是python新手,正在探索使用它从excel获取数据,并找到了pandas库来获取数据 我需要从网站上的HTML表格中获取费率。 然后将其转储到excel文件中。 我正在使用Python 我使用了以下代码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
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
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()