首页 > 解决方案 > 从时间戳中删除特定字符

问题描述

我有一个相当奇怪的时间格式和df带有列的数据框TIMESTAMP

2016-10-25T09:34:52.051713+01:00
2016-10-25T09:46:14.051620+01:00
2016-10-25T09:51:16.052435+01:00
....

但我需要将数据用作时间信息。首先,我想去掉最后 13 个字符,使它看起来像

2016-10-25T09:34:52
2016-10-25T09:46:14
2016-10-25T09:51:16
....

为此,我尝试了

df['TIMESTAMP'] = df.apply(lambda x: x['TIMESTAMP'][:-13], axis = 1)

删除 pandas DataFrame 列中字符串条目的结尾

但我收到错误:

TypeError: string indices must be integers

我不明白。我刚接触python,但我看不到我做错了什么?

标签: pythonjupyter-notebookdatetime-formatpython-datetime

解决方案


对您的问题的严格回答是使用str访问器,它可以像普通字符串一样获取切片,并将该切片应用于 中的每个值Series

data = ['2016-10-25T09:34:52.051713+01:00',
        '2016-10-25T09:46:14.051620+01:00',
        '2016-10-25T09:51:16.052435+01:00']

s = pd.Series(data)

print(s.str[:-13])

输出:

0    2016-10-25T09:34:52
1    2016-10-25T09:46:14
2    2016-10-25T09:51:16

但是,我认为您实际上想要的是pd.to_datetime,它将(在合理范围内)推断数据的格式并将其转换为datetime对象:

print(pd.to_datetime(s))

输出:

0   2016-10-25 09:34:52.051713+01:00
1   2016-10-25 09:46:14.051620+01:00
2   2016-10-25 09:51:16.052435+01:00
dtype: datetime64[ns, pytz.FixedOffset(60)]

推荐阅读