pandas 读CSV时间转换问题的终极解决

关于pandas 读CSV遇到时间戳的转换(不会缺失精度)
关于pandas 读CSV遇到object类型的时间的转换(不会缺失精度)

pandas 读CSV遇到时间戳的转换时间字符串

pandas 读CSV时间转换问题的终极解决
时间戳转时间字符串   timestemp--转--object
def stamp2time(timestamp):  # 时间戳转日期函数
    time_local = time.localtime(timestamp / 1000)
    dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
    return dt

df = pd.read_csv("data.csv")
df["timestamp"] = df["timestamp"].apply(stamp2time)
pirnt(df.info())

现在的时间列变成了object(也就是pandas中字符串)格式

pandas 读CSV时间转换问题的终极解决

pandas普通时间字符串转换成datetime时间格式

object--转--datetime64
df['timestamp'] = pd.to_datetime(df['timestamp'])

经过to_datetime函数后的字段从object格式转换为datetime64格式

pandas 读CSV时间转换问题的终极解决

pandas时间字符串转换成datetime时间格式(不会丢失精度)

丢失精度的问题

一般的情况下objec转datetime只需要使用to_datetime即可,然而有的时候会发现,对于有些CSV文件这样做会使转换后的时间与愿时间不对照,也就是发生了精度的丢失。

pandas 读CSV时间转换问题的终极解决

经过to_datetime之后变成了这样

pandas 读CSV时间转换问题的终极解决

可以发现时间列与原数据发生了变化,猝不及防的bug产生了!!!

解决办法

from dateutil.parser import parse

df_pre = pd.read_csv("data.csv")
这种方式转化时间不会丢失精度  object---转---datetime64
df_pre['timestamp'] = df_pre['timestamp'].apply(parse)
print(df_pre.info())
print(df_pre)

这样就可以解决丢失精度的问题,转换后的时间格式一致:

pandas 读CSV时间转换问题的终极解决

Original: https://blog.csdn.net/qq_58832911/article/details/124386386
Author: 卖香油的少掌柜
Title: pandas 读CSV时间转换问题的终极解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/693926/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球