[英]Strip microsecond from datetime
对于给定的时间数据-2018-06-01 2018-06-01 06:36:40.047883+00:00
,我想删除微秒并去除'+'之后的值。 我的大部分数据集都包含2018-06-04 11:30:00+00:00
类的值,没有微秒部分。
如何为所有值使用通用的日期时间格式?
假设您有多种不同的格式,如下所示:
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
实现此目标的另一种方法是使用str.split:
t = "2018-06-04 11:30:00+00:00"
t.split('+')[0]
我以数据类型为字符串的假设回答您的问题。
如果您在处理不同格式(例如"2018-06-01 06:36:40.047883+00:00"
和"2018-06-04 11:30:00+00:00"
"2018-06-01 06:36:40.047883+00:00"
"2018-06-04 11:30:00+00:00"
遇到问题,则可以使用split()
。 在此处了解有关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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.