python - 从时间戳中删除特定字符
问题描述
我有一个相当奇怪的时间格式和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,但我看不到我做错了什么?
解决方案
对您的问题的严格回答是使用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)]
推荐阅读
- python-3.x - 如何在 Python 3.9 中设置 http 代理
- javascript - nextjs 中无响应的 Grid 组件
- c# - XML反序列化嵌套
有属性 - r - 删除异常值的用户函数
- java - 将 JBoss 主页替换为应用程序主页
- docker - 使用 docker compose 和 mountebank 模拟外部调用
- flutter - Flutter 发布 HTTP 请求
- php - 虽然它是另一个项目 php 使用相同的会话登录
- node.js - JWT 不会过期 (Node.js)
- python-3.x - py2exe错误:[WinError 87]参数不正确