Python Notebook解析Twitter日期并提取时间戳与AM/PM标识
解决Twitter日期格式解析与时间提取问题
嘿,我来帮你搞定这个Twitter日期处理的问题~首先先揪出你代码里的小疏漏:你写的spear['ModDate'] = parser.parse(separ['created_at'])里,spear和separ应该是同一个DataFrame的名字吧?这大概率是拼写错误,导致代码没生效哦!
接下来我给你两种高效的处理方式,帮你解析日期并提取需要的时间戳和AM/PM标识:
方法一:用Pandas内置to_datetime(推荐,批量处理更快)
Pandas的to_datetime专门用来处理批量日期数据,比逐行调用parser.parse高效太多,步骤如下:
- 先解析日期列,生成datetime类型的新列:
import pandas as pd # 假设你的DataFrame名为df,日期列是'created_at' df['ModDate'] = pd.to_datetime(df['created_at'], format='%a %b %d %H:%M:%S %z %Y')
这里的format参数完全匹配你的Twitter日期格式:
%a:缩写星期(比如Sat)%b:缩写月份(比如Apr)%d:两位日期(比如07)%H:24小时制小时(比如16)%M:分钟%S:秒%z:时区偏移(比如+0000)%Y:四位年份(比如2018)
- 提取你需要的时间相关字段:
- 提取带AM/PM的12小时制完整时间戳:
df['Time_with_AMPM'] = df['ModDate'].dt.strftime('%I:%M:%S %p') # 示例输出:04:49:49 PM
- 单独提取AM/PM标识:
df['AMPM'] = df['ModDate'].dt.strftime('%p') # 示例输出:PM
- 如果需要24小时制时间戳,直接用:
df['Time_24h'] = df['ModDate'].dt.strftime('%H:%M:%S') # 示例输出:16:49:49
方法二:用dateutil.parser处理(适合单个元素,批量建议用方法一)
如果你坚持要用dateutil.parser,需要用apply遍历整个列处理,同时修正拼写错误:
from dateutil import parser # 确保DataFrame名称一致,比如都用df df['ModDate'] = df['created_at'].apply(lambda x: parser.parse(x)) # 后续同样用dt.strftime提取时间和AM/PM df['Time_with_AMPM'] = df['ModDate'].dt.strftime('%I:%M:%S %p') df['AMPM'] = df['ModDate'].dt.strftime('%p')
为什么你的原代码没生效?
除了拼写错误,核心问题是parser.parse只能处理单个字符串,不能直接作用于Pandas的Series(也就是整列数据),必须用apply或者Pandas的内置方法来批量处理。
这样操作后,你就能轻松得到需要的时间戳和AM/PM标识啦~
内容的提问来源于stack exchange,提问作者ambrish dhaka
相关产品推荐
相关产品推荐

