我有一个很大的数据框,其中包含日期,商店数量,已售单元和雨水总量。看起来像这样...
date store_nbr units preciptotal
2014-10-11 1 0 0.00
2014-10-12 1 0 0.01
2014-10-13 1 2 0.00
2014-10-14 1 1 2.13
2014-10-15 1 0 0.00
2014-10-16 1 0 0.87
2014-10-17 1 3 0.01
2014-10-18 1 0 0.40
我想在降水总量大于1的任何日期附近选择一个三天的窗口。对于这个小例子,我想返回前7行,即2014-10-14
之前的三天,2014-10-14
之后的三天。以及2014-10-14
,因为它的序数大于1。
python大神给出的解决方案
对于特定值,您可以执行以下操作:
In [84]:
idx = df[df['preciptotal'] > 1].index[0]
df.iloc[idx-3: idx+4]
Out[84]:
date store_nbr units preciptotal
0 2014-10-11 1 0 0.00
1 2014-10-12 1 0 0.01
2 2014-10-13 1 2 0.00
3 2014-10-14 1 1 2.13
4 2014-10-15 1 0 0.00
5 2014-10-16 1 0 0.87
6 2014-10-17 1 3 0.01
对于更一般的情况,您可以获得满足条件的索引数组
idx_vals = df[df['preciptotal'] > 1].index
那么您可以生成切片或遍历数组值:
for idx in idx_values:
df.iloc[idx-3: idx+4]
假设您的索引是一个基于0的int64索引,您的样本是