python - Python:pd.to_datetime 删除所有日期
问题描述
我目前正在从数据库(使用 PgAdmin)下载 CSV,并使用 Python 脚本重新格式化和过滤行以导入其他地方。但是,我遇到了一个非常奇怪的错误。
如果我尝试使用从数据库下载的 CSV 运行脚本,它会将其中一列中的所有日期转换为空白 (NaN)。但是,如果我事先在 Excel 中打开同一个文档,并将“另存为”到另一个 CSV 文件中,我的脚本会将所有日期正确地转换为所需的格式 ( dd/mm/yyyy
)。
这是一个最小的复制案例:
import pandas as pd
file_path = r'C:\Users\MiguelTavares\Desktop\from_database.csv'
data = pd.read_csv(file_path)
data['start_date'] = pd.to_datetime(data['start_date'], errors='coerce', format='%d/%m/%Y')
print(data)
CSV 看起来像这样:
column1 column2 start_date
test1 test2 26/06/2019
test11 test22 25/07/2019
我相信这一切都会发生,因为我正在路过errors='coerce'
。但是我需要传递它,因为如果我没有得到 ValueError,我需要将此信息放入日期时间,以便以后可以使用它进行计算。
ValueError: time data '2019-06-26' does not match format '%d/%m/%Y' (match)
CSV 文件的格式 (.csv) 和编码 (UTF-8) 与数据库中的文件、我“另存为”的文件以及其中的内容相同。那么,为什么我的脚本与我“另存为”的副本完美配合,而不是数据库中的那个?
提前致谢!
解决方案
import pandas as pd
file_path = r'C:\Users\MiguelTavares\Desktop\from_database.csv'
# parse dates while reading csv. dayfirst=True parsing it from format DD/MM
data = pd.read_csv(file_path, parse_dates=['start_date'], dayfirst=True)
print(data)
这应该有效。
推荐阅读
- azure-web-app-service - PuppeteerSharp LaunchAsync 作为 Windows .net core 5 App 服务在 Azure 上失败
- r - 无法设置 Rstudio
- typescript - 如何在 Typescript 中定义泛型函数类型;两种类似的方式?
- python - PermissionDenied:使用 Google Cloud Billing Budget API 时出现 403 错误
- excel - 如果月份是六月并且行文本包含,则求和
- angular - ReferenceError:在使用 Jest 进行 Angular 测试初始化之前无法访问“AccordionComponent”
- flutter - navigator.pushReplacement 之后的代码还在执行吗?(扑)
- sql - SQL 帮助显示编号。一年中每个月所有分支机构的开业人数
- wordpress - 从本地网络访问 WordPress Docker 容器
- c++ - 无法分配给 C++ 中的指针数组