Gus*_*ing 9 python pandas xlsxwriter
我在这个问题上运行了很长一段时间。
我将作者设置如下:
writer = pd.ExcelWriter(arquivo+'.xlsx', engine = 'xlsxwriter', options = {'remove_timezone': True})
df.to_excel(writer, header = True, index = True)
Run Code Online (Sandbox Code Playgroud)
此代码在 s 函数内。问题是每次我运行代码时,它都会从数据库中获取信息,其中包含两列 datetime64[ns, UTC] 对象和时区信息。但是当保存到 Excel 的代码运行时,我收到:
ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种方法,例如 'dt.tz_convert'、replace(tzinfo=None) 和我在这里和周围找到的其他解决方案。
代码在我的个人电脑上运行没有问题,我的同事使用相同的机器规格可以运行代码。只有在我的机器上没有。我已经重新安装了python和所有包,包括格式化机器什么的,错误仍然存在。
xlrd v1.1.0
xlsxwriter v1.0.4
蟒蛇 3.7.4
熊猫 v0.25.1
如果有人能给这个问题带来一些启示,我将不胜感激。
谢谢
小智 9
你的时间戳是什么格式的?
我刚刚遇到了类似的问题。
我试图将数据框保存到 Excel。但是我得到了:
我检查了这种格式的日期格式 '2019-09-01T00:00:00.000Z'
这是pandas._libs.tslibs.timestamps.Timestamp
来自的时间戳pandas.to_datetime
其中包括date()将日期转换为"%Y-%m-%d"excel 可接受的格式的方法
所以我的代码是这样的:
#Pseudo
df['date'] = old_dates
df['date'] = df['date'].apply(lambda a: pd.to_datetime(a).date())
# .date() removes timezone
...df.to_excel etc.
Run Code Online (Sandbox Code Playgroud)
小智 7
这应该可以完成工作,在导出到 excel 之前从列中删除时区(使用 tz_localize(None))。
# Check which columns have timezones datetime64[ns, UTC]
df.dtypes
# Remove timezone from columns
df['date'] = df['date'].dt.tz_localize(None)
# Export to excel
df.to_excel('filename.xlsx')
Run Code Online (Sandbox Code Playgroud)
小智 6
我发现这种方式更简单、更有活力。此解决方案您按类型选择列并应用所需的转换。
date_columns = df.select_dtypes(include=['datetime64[ns, UTC]']).columns
for date_column in date_columns:
df[date_column] = df[date_column].dt.date
df.to_excel('anbima_feed.xlsx',engine='xlsxwriter')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13121 次 |
| 最近记录: |