【发布时间】:2021-04-10 14:41:30
【问题描述】:
我正在以 csv 格式输入数据。大多数日期都在 1900 年之后,但也有一些比这更早。迄今为止我见过的最古老的是 1518 年。
1518 日期实际上出现了越界错误。我知道 python 应该能够处理 584 岁左右的日期,但在这种情况下它没有。这个限制不是问题。
这是我的数据示例:
Index,Dates
00457,01/01/1981
134535,22/12/1977
3015,15/11/1889
00458,01/01/1981
00459,01/01/1981
134774,10/01/1978
00461,01/01/1981
00764,01/01/2000
00462,01/01/1981
00899,23/09/1518
00063,01/01/1981
00464,01/01/1981
使用中读取文件后:
DF = pd.read_csv(sourceFile5,parse_dates=['Dates'], dayfirst=True, index_col="cNumber", skipinitialspace = True)
格式很好,但是当我尝试使用过滤结果时
newDF.append(DF[ DF["Dates"] > one_month_ago])
(请注意 one_month_ago 是我的脚本定义的变量)
没有任何条目被识别(即使是从 1900 年开始的条目)。我知道 filter 命令有效,因为我已将这些与不包含此类旧日期的其他 .csv 文件一起使用并且没有问题。
为此,我添加了额外的步骤:
DF["Dates"] = pd.to_datetime(DF["Dates"], dayfirst = True, format = "%d/%m/%Y", errors = "coerce")
1900 年后的日期返回正常,但更早的日期返回为 YYYY-MM-DD。即便如此,在我上面提到的过滤阶段,即使在这个额外的步骤之后,也没有被识别出来。该列似乎以一系列字符串的形式返回。
我不知道为什么会这样。有人可以帮忙吗?
【问题讨论】:
-
这些越界日期是否有效?我建议使用关键字
dayfirst=True和errors='coerce'尝试 pd.to_datetime
标签: python python-3.x pandas datetime