我有一个简单的问题,似乎无法为之找到答案。

假设我有一个包含日期,开盘价,最高价,最低价,收盘价和成交量的数据框。

我想做的是首先找到我可以使用的当前日期:

today = pd.datetime.today().date()

我的问题是从当前日期选择最近20天的数据。

我需要选择最后20行,因为然后需要在此数据集的紧密列中找到最高和最低值。

任何指针都会有很大帮助。 iv搜索了一段时间的谷歌,并继续寻找不同的答案。

谢谢!

最佳答案

设置

today = pd.datetime.today().date()

df = pd.DataFrame(
    np.random.rand(20, 4),
    pd.date_range(end=today, periods=20, freq='3D'),
    columns=['O', 'H', 'L', 'C'])

df

                   O         H         L         C
2017-08-01  0.821996  0.894122  0.829814  0.429701
2017-08-04  0.883512  0.668642  0.524440  0.914845
2017-08-07  0.035753  0.231787  0.421547  0.163865
2017-08-10  0.742781  0.293591  0.874033  0.054421
2017-08-13  0.252422  0.632991  0.547044  0.650622
2017-08-16  0.316752  0.190016  0.504701  0.827450
2017-08-19  0.777069  0.533121  0.329742  0.603473
2017-08-22  0.843260  0.546845  0.600270  0.060620
2017-08-25  0.834180  0.395653  0.189499  0.820043
2017-08-28  0.806369  0.850968  0.753335  0.902687
2017-08-31  0.336096  0.145325  0.876519  0.114923
2017-09-03  0.590195  0.946520  0.009151  0.832992
2017-09-06  0.901101  0.616852  0.375829  0.332625
2017-09-09  0.537892  0.852527  0.082807  0.966297
2017-09-12  0.104929  0.803415  0.345942  0.245934
2017-09-15  0.085703  0.743497  0.256762  0.530267
2017-09-18  0.823960  0.397983  0.173706  0.091678
2017-09-21  0.211412  0.980942  0.833802  0.763510
2017-09-24  0.312950  0.850760  0.913519  0.846466
2017-09-27  0.921168  0.568595  0.460656  0.016313

解决方案
使用pandas datetime索引切片。非常简单明了, Pandas 开发人员打算解决此问题。
注意:这不是而不是关心最近20天内有多少行,它只是捕获所有行。这就是我认为OP想要的。
df[today - pd.offsets.Day(20):]

                   O         H         L         C
2017-09-09  0.537892  0.852527  0.082807  0.966297
2017-09-12  0.104929  0.803415  0.345942  0.245934
2017-09-15  0.085703  0.743497  0.256762  0.530267
2017-09-18  0.823960  0.397983  0.173706  0.091678
2017-09-21  0.211412  0.980942  0.833802  0.763510
2017-09-24  0.312950  0.850760  0.913519  0.846466
2017-09-27  0.921168  0.568595  0.460656  0.016313

关于python - Pandas 选择最近20天的数据。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46459140/

10-12 00:31
查看更多