处理社交媒体数据集时pd.to_datetime转换日期报ParserError如何解决
问题解决方法
错误原因说明
- 概率最高的原因:读取数据集时未正确识别表头,导致列名
created_at被当成了数据行内容,转换时遇到纯字符串created_at无法解析 - 次要原因:你的时间字符串包含固定时区标识
ET、12小时制+AM/PM、星期缩写等特殊格式,pandas默认的自动解析规则无法匹配
具体解决步骤
步骤1:排查数据读取问题
先执行以下代码检查列内容:
print(data['created_at'].head())
如果输出结果第一行是created_at,说明表头被当成了数据,重新读取数据时指定表头参数即可:
data = pd.read_csv('你的社交媒体数据路径.csv', header=0)
步骤2:指定时间格式完成转换
针对你给出的7:51 PM ET Fri, 17 July 2020格式,手动指定匹配的格式串,同时可以加errors='coerce'处理少量脏数据,避免程序直接中断:
# 先把字符串转成datetime类型 data['created_at'] = pd.to_datetime( data['created_at'], format='%I:%M %p ET %a, %d %B %Y', errors='coerce' ) # 转成YYYY-MM-DD格式的日期字符串,和股票数据格式对齐 data['trade_date'] = data['created_at'].dt.strftime('%Y-%m-%d')
如果后续需要做时间计算,也可以用data['created_at'].dt.date保留日期类型而非字符串。
内容的提问来源于stack exchange,提问作者user16561849
相关产品推荐
相关产品推荐

