对于给定的时间数据-2018-06-01 06:36:40.047883+00:00
,我想删除微秒并在'+'之后去除该值。我的大多数数据集都包含2018-06-04 11:30:00+00:00
之类的值,没有微秒部分。
如何为所有值使用通用的日期时间格式?
答案 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