负浮点型日期列转换为dd-mm-yyyy格式时年份异常问题咨询
问题原因
你得到1969年左右的日期,是因为直接调用日期转换方法时,默认将数值识别为Unix时间戳:Unix时间戳的0值对应1970-01-01 00:00:00 UTC,负数自然会解析为1970年之前的日期。
你的这些浮点值本质是相对于某个固定基准日期的时间偏移量,只要先确定数据源对应的基准日期,再做偏移计算即可得到2018-2020区间的正确日期。
解决步骤
- 确认你数据集对应的基准日期:即偏移量为0时对应的正确日期,需要根据你数据的采集规则/来源确定,以下示例假设基准日期为
2020-01-01,你可以根据实际情况替换。 - 用pandas做偏移计算并格式化,代码示例如下:
import pandas as pd # 构造示例DataFrame,替换为你自己的df df = pd.DataFrame({ 'Date': [-1.476329, -2.754683, -0.763295, -3.113292, -1.353446] }) # 替换为你的实际基准日期 base_date = pd.Timestamp('2020-01-01') # 将浮点值转为天数偏移,叠加基准日期 df['formatted_date'] = base_date + pd.to_timedelta(df['Date'], unit='D') # 格式化为dd-mm-yyyy的字符串格式 df['formatted_date'] = df['formatted_date'].dt.strftime('%d-%m-%Y')
- 若你的浮点值偏移单位不是天,修改
pd.to_timedelta的unit参数即可:可选值包括h(小时)、m(分钟)、s(秒)等,适配你的数据规则即可。
内容的提问来源于stack exchange,提问作者Sudhanshu Sharan
相关产品推荐
相关产品推荐

