首页 > 解决方案 > 从日期时间中去除微秒

问题描述

对于给定的 timedata - 2018-06-01 06:36:40.047883+00:00,我想删除微秒并去除“+”之后的值。我的大部分数据集都包含2018-06-04 11:30:00+00:00没有微秒部分的值。

如何为所有值使用通用的日期时间格式?

标签: pythondatetime

解决方案


假设您混合了如下所示的不同格式:

import pandas as pd

df = pd.DataFrame()
df['time'] = ['2018-06-01 06:36:40.047883+00:00', '2018-06-01 06:36:40.047883+00:00', '2018-06-04 11:30:00+00:00', '2018-06-01 06:36:40.047883']

对应输出:

                               time
0  2018-06-01 06:36:40.047883+00:00
1  2018-06-01 06:36:40.047883+00:00
2         2018-06-04 11:30:00+00:00
3        2018-06-01 06:36:40.047883

您希望通过删除微秒和 + 之后的任何内容来获得通用格式。简而言之,您需要 YMD HMS 格式的内容。

目前,让我假设您的列是字符串格式。因此,我们现在将其转换为日期时间格式,然后将微秒部分替换为 0 并去掉它。

df['time'] = pd.to_datetime(df['time'])
df['time'] = df['time'].apply(lambda x: x.replace(microsecond = 0))

输出:

                 time
0 2018-06-01 06:36:40
1 2018-06-01 06:36:40
2 2018-06-04 11:30:00
3 2018-06-01 06:36:40

推荐阅读