关于pandas 读CSV遇到时间戳的转换(不会缺失精度)
关于pandas 读CSV遇到object类型的时间的转换(不会缺失精度)
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普通时间字符串转换成datetime时间格式
# object--转--datetime64
df['timestamp'] = pd.to_datetime(df['timestamp'])
?????????经过to_datetime函数后的字段从object格式转换为datetime64格式
????????
?pandas时间字符串转换成datetime时间格式(不会丢失精度)
丢失精度的问题?
????????一般的情况下objec转datetime只需要使用to_datetime即可,然而有的时候会发现,对于有些CSV文件这样做会使转换后的时间与愿时间不对照,也就是发生了精度的丢失。
????????例如:当前的时间是这样的
?????????经过to_datetime之后变成了这样
????????可以发现时间列与原数据发生了变化,猝不及防的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)
?这样就可以解决丢失精度的问题,转换后的时间格式一致:
?
?
|