python - 处理 csv 文件中不同格式的时间戳
问题描述
我有一个 csv 文件,其中包含具有以下时间戳格式的数据:“%Y-%d-%m %H:%M:%S”。我已经创建了在 python 中使用 pandas 解析这些日期时间的代码:
mydateparser = lambda x: pd.datetime.strptime(x, "%Y-%d-%m %H:%M:%S")
df = pd.read_csv(filename, parse_dates = [3], date_parser = mydateparser)
问题是一天开始的每个数据点的格式都像这样“%Y-%d-%m”,所以不是“2018-01-07 00:00:00”而是“2018- 01-07”。这些数据点当然会给我这个错误:
ValueError:时间数据“2018-01-07”与格式“%Y-%d-%m %H:%M:%S”不匹配
我该如何解决这个问题?我可以使用替代解析器或其他东西吗?
解决方案
如果这些是唯一的变体,您可以只定义一个解析器而不是使用 lambda:
def my_date_parser(d):
try:
result = pd.datetime.strptime(d, "%Y-%d-%m %H:%M:%S")
except ValueError:
result = pd.datetime.strptime(d, "%Y-%d-%m")
return result
df = pd.read_csv(filename, parse_dates=[3], date_parser=my_date_parser)
推荐阅读
- excel - 过滤日期格式为“dd/mm/yyyy h:mm”
- python - 以百分比值为中心
- c# - 如何绘制 WPF 3D 横截面?
- vb.net - DatagridView:基于单元格值的颜色行
- python - 需要帮助绘制正弦曲线的 x 轴
- image-segmentation - 图像分割算法是否只考虑形状?还是尺寸、颜色和表面图案?
- android - 使用 RxJava 发布数据后如何从服务器获取响应
- javascript - 如何处理多个复选框
- android - 使用 app:actionLayout 时,setOnMenuItemClickListener 不适用于底部应用栏
- python - 加载跟踪文件时如何修复“UnicodeDecodeError:'utf-8'”