Python中将pandas DataFrame保存为xlsb格式及时区日期处理问题
问题描述
现有一个包含5列的DataFrame,其中日期列为Object类型,数据样例如下:
DATE 0 2020-06-01T00:00:00.000Z 1 2021-08-01T00:00:00.000Z 2 2021-06-01T00:00:00.000Z 3 2021-07-01T00:00:00.000Z 4 2021-01-01T00:00:00.000Z
需要将该DataFrame转换为xlsb格式用于后续Excel分析。
此前尝试过移除日期列的时区组件、将日期列转换为YMD格式,但转换完成后日期列仍有时区组件,在R中执行缺失值填充、异常值处理时无法正常提取年、月、日字段,因此打算先将DataFrame导出为xlsb格式再重新导入,以此消除时区组件,也欢迎更优的移除时区、转换YMD格式的方案。
解决方案
方案1:直接移除日期列时区(更优)
无需通过导出导入xlsb绕路,直接对日期列做格式转换即可完全消除时区信息,处理后的日期列可直接在Python、R中正常提取年月日字段:
- 依赖安装(若未安装pandas):
pip install pandas - 执行转换代码:
import pandas as pd # 转换为datetime类型后移除时区信息 df['DATE'] = pd.to_datetime(df['DATE']).dt.tz_localize(None) # 若需要直接输出为YYYY-MM-DD格式的字符串,可替换为以下代码 # df['DATE'] = pd.to_datetime(df['DATE']).dt.strftime('%Y-%m-%d')
方案2:导出为xlsb格式
如果仍需要导出xlsb格式文件,可通过pyxlsb引擎实现:
- 依赖安装:
pip install pandas pyxlsb - 执行导出代码:
# index=False表示不导出pandas自带的行索引 df.to_excel('输出文件.xlsb', engine='pyxlsb', index=False)
导出后的xlsb文件重新导入时,日期列会自动识别为无时区的日期格式,可正常进行后续处理。
内容的提问来源于stack exchange,提问作者AMIT BISHT
相关产品推荐
相关产品推荐

