【发布时间】:2020-07-24 13:45:16
【问题描述】:
我正在从 csv 导入数据,并尝试将特定日期设置为今天的日期。
如果以这种方式格式化,则 csv 中的数据:
该列中的所有数据都是日期并且格式完全相同。我现在用df = pd.read_csv(r'<filapath.csv>)读入了数据。
然后运行此命令以将“2020 年 7 月 21 日”的所有实例转换为今天的日期:
df['filedate'] = np.where(pd.to_datetime(df['filedate']) == '7/21/2020', pd.Timestamp('now').floor(freq='d'),df['filedate'])
我收到此错误:pandas._libs.tslibs.np_datetime.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-14 00:00:00
我不想使用errors='coerce',因为该列将始终 100% 填充真实日期,并且稍后我需要按日期过滤数据框。我看不到的 csv 数据中似乎有一些“幽灵”精度。在这种情况下,我无法修改 csv 列,也无法使用 pandas 和 numpy 之外的任何包。
【问题讨论】:
-
您是否发现 csv 中的哪一行导致了错误?除了我建议尝试
.loc之外,我似乎无法使用您发布的示例中的某些日期字符串重现错误。 -
每一行都可能导致错误。这是令人费解的部分!例如,如果我复制列并填充我自己的日期,格式与列中自动填充的日期完全相同,我的代码就可以正常工作。我认为单元格中隐藏了一些幽灵格式(不知道还能叫什么)。
-
您是否检查过如果将列预先转换为 datetime
df['filedate'] = pd.to_datetime(df['filedate'])会发生什么?
标签: python pandas numpy datetime date-formatting