python - Pandas.Series 在已知日期之前获得 10 个值
问题描述
我有一个看起来像这样的 pandas.Series
data =
'.INX'
Date
2019-01-29 2640.000000
2019-01-30 2681.005561
2019-01-31 2689.750205
2019-02-01 2751.544352
2019-02-04 2745.497311
2019-02-05 2767.970645
2019-02-06 2798.255994
2019-02-07 2707.690765
2019-02-08 2703.569149
2019-02-11 2640.521470
2019-02-12 2645.174583
2019-02-13 2644.231926
2019-02-14 2658.562312
2019-02-15 2658.030814
2019-02-19 2607.297839
2019-02-20 2553.135199
2019-02-21 2553.355821
2019-02-22 2514.045036
2019-02-25 2474.393290
2019-02-26 2423.449722
我想在“2019-02-20”之前获得 10 个历史数据点,但无法弄清楚如何。
我试过:
data['2019-02-20':-10]
而且,可能并不令我惊讶,它没有用。我可以巧妙地混合索引类型,还是必须获取索引并找到正确的日期?
解决方案
看起来“日期”是您的索引,因此如果索引还不是日期时间,您可以尝试转换为日期时间
df.index = pd.to_datetime(df.index)
然后你可以这样做:
df.loc[df.index < '2019-02-20'].tail(10)
或者:
# extract 11 rows ending with the said date
# then taking top 10 rows
df.loc[:'2019-02-20'].tail(11).head(10)
注意:如果查询日期不在索引中,则第二种方法似乎无法按预期工作。
输出:
'.INX'
Date
2019-02-05 2767.970645
2019-02-06 2798.255994
2019-02-07 2707.690765
2019-02-08 2703.569149
2019-02-11 2640.521470
2019-02-12 2645.174583
2019-02-13 2644.231926
2019-02-14 2658.562312
2019-02-15 2658.030814
2019-02-19 2607.297839
推荐阅读
- google-cloud-platform - GCP Cloud Run for Anthos - 使用 gcloud run deploy 部署服务时出现 PERMISSION_DENIED
- python-3.x - 从python中的第二个元素转置列表列表
- unix - 如何使用列值作为使用 unix ksh 脚本从表创建的文件名的一部分
- c++ - 地图中的 .end()->first 是什么意思
- recursion - temp 如何访问丢失的数据
- vba - 在 Excel VBA 中接收 Next 而没有 For 错误
- bash - 在 bash 脚本中,循环必须继续,直到输入特定的关键字
- red-black-tree - 插入红黑树
- yaml - YAML 中的索引数组是什么?
- python - 我无法使用 python 从电子表格上的电子邮件列表中发送电子邮件