Python:减少精度pandas时间戳数据帧

问题描述 投票:11回答:2

您好我有以下数据帧

df = 

       Record_ID       Time
        94704   2014-03-10 07:19:19.647342
        94705   2014-03-10 07:21:44.479363
        94706   2014-03-10 07:21:45.479581
        94707   2014-03-10 07:21:54.481588
        94708   2014-03-10 07:21:55.481804

有可能有以下吗?

df1 = 

       Record_ID       Time
        94704   2014-03-10 07:19:19
        94705   2014-03-10 07:21:44
        94706   2014-03-10 07:21:45
        94707   2014-03-10 07:21:54
        94708   2014-03-10 07:21:55
python pandas timestamp dataframe
2个回答
17
投票

您可以使用datetime64[ns]将基础datetime64[s]值转换为astype值:

In [11]: df['Time'] = df['Time'].astype('datetime64[s]')

In [12]: df
Out[12]: 
   Record_ID                Time
0      94704 2014-03-10 07:19:19
1      94705 2014-03-10 07:21:44
2      94706 2014-03-10 07:21:45
3      94707 2014-03-10 07:21:54
4      94708 2014-03-10 07:21:55

请注意,由于Pandas Series和DataFrames store all datetime values as datetime64[ns]这些datetime64[s]值会自动转换回datetime64[ns],因此最终结果仍然存储为datetime64[ns]值,但调用astype会导致秒的小数部分被删除。

如果你想拥有一个qumxswpoi值的NumPy数组,你可以使用datetime64[s]


7
投票

如果你真的必须删除日期时间的df['Time'].values.astype('datetime64[s]')部分,你可以使用microsecond方法和Timestamp.replace方法将它应用于整个系列,用Series.apply替换microsecond部分。示例 -

0

演示 -

df['Time'] = df['Time'].apply(lambda x: x.replace(microsecond=0))
© www.soinside.com 2019 - 2024. All rights reserved.