python - 在 Pandas 数据框中查找最后可用日期
问题描述
假设我有一个 Pandas DataFrame,如下所示:
+------------+-------+
| Date | Price |
+------------+-------+
| 01/01/2021 | 10 |
| 01/02/2021 | 20 |
| 01/03/2021 | 30 |
| 01/05/2021 | 40 |
| 01/08/2021 | 20 |
| 01/09/2021 | 10 |
+------------+-------+
可以使用以下代码生成上述数据帧:
df = pd.DataFrame({'Date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-05', '2021-01-08', '2021-01-09'],
'Price': [10, 20, 30, 40, 20, 10]})
df['Date'] = pd.to_datetime(df['Date'])
现在给定一个存储在变量中的日期end_date
。第一步是查找日期是否存在于数据框中。可以使用以下代码完成:
if end_date in df.Date.values:
pass
else:
# find last available date.
在数据框中找到最后一个可用日期的最优雅的方法是什么。
例如,如果end_date = '2021-01-10'
。由于它在数据框中不存在,我希望end_date
将值设置为2021-01-09
. 同样,如果end_date = 2021-01-07
我想end_date
将值设置为2021-01-05
.
或者 ifend_date = 2021-01-08
end_date
不会被覆盖并保持原样 ie end_date = 2021-01-08
。
解决方案
您可以尝试使用loc
and iloc
:
end_date = "2021-01-07"
print(df.loc[df['Date'] <= end_date, 'Date'].iloc[-1].date())
输出:
2021-01-05
或者:
end_date = "2021-01-07"
print(df.loc[df['Date'] <= end_date, 'Date'].max().date())
推荐阅读
- php - Laravel - 播种不令人耳目一新
- r - $ 运算符对原子向量无效,但没有 $
- list - Flutter Dart:如何更改类列表中类属性的值
- spring - 无法从浏览器中找到模板文件夹中的任何文件
- xamarin - Proguard 导致错误膨胀类 android.support.design.internal.BaselineLayout
- email - 如何明确指定要发送的电子邮件的语言?
- spring-security - 在 Spring Resource Server 中采用来自 JWT 的权限
- asp.net-core - 在 Razor 中显示基于模型 var 的隐藏 html 属性 - “@”必须后跟有效的代码块
- vba - VBA-Word 错误:如果在撤消列表中有“应用快速样式”时使用 UndoRecord 记录“全部替换”,则撤消列表会出错。如何避免?
- php - WordPress - functions.php 导致 WordPress 错误