gpt4 book ai didi

python - 解析 unix 时间戳时丢失秒数的精度

转载 作者:行者123 更新时间:2023-12-01 05:22:12 27 4
gpt4 key购买 nike

当我尝试读取带有 unix 时间戳的 .csv 文件名时,它看起来像我用来转换的列被视为字符串。它会导致精度下降。经过几次实验我得到:

>>> import pandas as pd   
>>> import datetime as dt
>>> from StringIO import StringIO
>>>
>>> input1 = StringIO('unix_timestamp\n1388518220.9870002')
>>> input2 = StringIO('another_col,unix_timestamp\n0,1388518220.9870002')
>>> input3 = StringIO('unix_timestamp,another_col\n1388518220.9870002,0')
>>>
>>> pd.read_csv(input1, usecols=['unix_timestamp'], date_parser=lambda x: dt.datetime.fromtimestamp(float(x)), parse_dates={'parsed_unix_timestamp':['unix_timestamp']})

parsed_unix_timestamp
0 2013-12-31 20:30:20.987000
[1 rows x 1 columns]

>>> pd.read_csv(input2, usecols=['unix_timestamp'], date_parser=lambda x: dt.datetime.fromtimestamp(float(x)), parse_dates={'parsed_unix_timestamp':['unix_timestamp']})

parsed_unix_timestamp
0 2013-12-31 20:30:20.990000
[1 rows x 1 columns]

>>> pd.read_csv(input3, usecols=['unix_timestamp'], date_parser=lambda x: dt.datetime.fromtimestamp(float(x)), parse_dates={'parsed_unix_timestamp':['unix_timestamp']})

parsed_unix_timestamp
0 2013-12-31 20:30:20.987000
[1 rows x 1 columns]

>>> pd.__version__
'0.13.1'

看起来列顺序在处理数据类型时会有所不同。

>>> str(1388518220.9870002)
>>> '1388518220.99'

这是错误还是预期行为?

最佳答案

您对 float 的转换导致了这种情况,相反,最好用

读取它
dtype={'unix_timestamp' : object}

然后

df['unix_timestamp'] = pd.to_datetime(df['unix_timestamp'],unit='s')

如果您只是将其作为 float (默认值)读入,它可能也可以工作。我认为它们的精度足够。不过之后肯定会转换。

关于python - 解析 unix 时间戳时丢失秒数的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22098656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com