python - to_datetime - max 函数返回错误的最大日期
问题描述
我有来自 csv 文件的数据,我正在尝试获取最大日期。
数据:
0 01/01/1994
1 01/01/1994
2 01/01/1994
3 01/01/1994
4 01/01/1994
.
.
.
970075 31/08/2021
970076 31/08/2021
970077 31/08/2021
970078 31/08/2021
970079 31/08/2021
但是,我得到了错误的最大值。似乎我的代码设置为字符串我的日期列,而不是日期格式,即使我设置了 to_datetime。因此,我使用re
该字符串来获取年份。
我的代码:
file['Date'] = pd.to_datetime(file['Date'], errors = 'coerce',
dayfirst = True, format = '%d.%m.%Y'
).dt.strftime('%d/%m/%Y')
print(file['Date'].min(), file['Date'].max(), range(int(re.search(r'(\d{4})', file['Date'].min()).group()), int(re.search(r'(\d{4})', file['Date'].max()).group())))
回报:
01/01/1994 31/12/2020 range(1994, 2020)
我想得到最大值31/08/2021
而不是31/12/2020
。
解决方案
删除.dt.strftime
用于将日期时间转换为字符串 repr。
.dt.strftime('%d/%m/%Y')
min
您可以在和之后转换为自定义格式max
。
总之,还可以简化以获得最大和最小年份:
file['Date'] = pd.to_datetime(file['Date'], errors = 'coerce', dayfirst = True)
years = file['Date'].dt.year
print(file['Date'].min().strftime('%d/%m/%Y'),
file['Date'].max().strftime('%d/%m/%Y'),
range(years.min(), years.max()))
01/01/1994 31/08/2021 range(1994, 2021)
推荐阅读
- java - 我怎么做才能让这个框架中的圆圈实际上自动移动?
- c# - 在这种情况下是否有另一种添加 Console.WriteLine() 的方法
- php - 在窗口 10 中安装 laravel 安装程序时出错
- vue.js - 创建组件并附加到父级的 Vue 指令
- powershell - 如何在 PowerShell 脚本中传递 Windows 凭据?
- python - 标记标签似乎在 TreeViewColumn 字符串的开头不起作用
- android - 构建项目时Android Studio中的AAPT错误
- javascript - 根据更改的属性数量创建对象数组
- android - 为什么是 todo-mvp-dagger,而不是 todo-mvvm-dagger?
- .net - IIS 上的 Web API - 内存消耗增加,直到应用程序池堆栈