如何在Pandas中为DataFrame添加无毫秒的合成时间戳以适配Quicksight格式要求
去除Pandas时间戳中的毫秒,适配Quicksight格式转换
嘿,刚好碰到过类似的需求,给你几个简单靠谱的解决办法,保证处理后的时间戳没有毫秒残留,方便后续在Quicksight里转成目标格式:
方法1:生成后直接向下取整到秒
这是最直接高效的方式,利用Pandas的floor方法把时间戳统一取整到最近的秒,彻底去掉毫秒:
from datetime import datetime import pandas as pd # 先生成匹配DataFrame行数的时间序列 date_rng = pd.date_range(start='1/1/2020', end='1/21/2020', periods=len(df)) # 去掉毫秒,保留到秒级精度 date_rng = date_rng.floor('S')
如果你的场景需要向上取整或者四舍五入,把floor('S')换成ceil('S')或者round('S')就行。
方法2:字符串转译强制去除毫秒
要是你担心还有隐藏的毫秒信息,可以先把时间序列转成不带毫秒的字符串,再转回datetime类型,从根源上杜绝毫秒:
# 先转成"%Y-%m-%d %H:%M:%S"格式的字符串,再转回时间戳 date_rng = pd.to_datetime(date_rng.strftime('%Y-%m-%d %H:%M:%S'))
方法3:添加DataFrame列时一步到位
如果你是要直接把这个处理好的时间戳作为新列加入DataFrame,可以合并成一行代码,更简洁:
import pandas as pd df['timestamp'] = pd.date_range(start='1/1/2020', end='1/21/2020', periods=len(df)).floor('S')
这样处理后的时间戳就完全没有毫秒部分了,后续在Quicksight里转换为Jan 1, 1400 00:00:00格式时就不会有多余的干扰啦。
内容的提问来源于stack exchange,提问作者Itzy Death
相关产品推荐
相关产品推荐

