从日期时间剥离微秒

时间:2018-08-27 06:07:06

标签: python datetime

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

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

3 个答案:

答案 0 :(得分:3)

假设您混合使用了以下不同格式:

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

您希望通过删除微秒和+之后的所有内容来获得通用格式。简而言之,您想要的是Y-M-D H-M-S格式。

当前,让我假设您的列为字符串格式。因此,我们现在将其转换为日期时间格式,然后将微秒部分替换为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

答案 1 :(得分:2)

另一种实现方法是使用str.split:

t = "2018-06-04 11:30:00+00:00"
t.split('+')[0]

答案 2 :(得分:0)

我假设您的数据类型是字符串来回答您的问题。

如果您在处理"2018-06-01 06:36:40.047883+00:00""2018-06-04 11:30:00+00:00"之类的不同格式时遇到问题,则可以使用split()。 在here

了解有关split()的更多信息
str_data_time.split("+")[0].split(".")[0]

就像

for str_data_time in ["2018-06-01 06:36:40.047883+00:00", "2018-06-04 11:30:00+00:00"]:
    output = str_data_time.split("+")[0].split(".")[0]
    print(output)

以上脚本的输出为

2018-06-01 06:36:40
2018-06-04 11:30:00