【问题标题】:Pandas: Select rows up to last occurrence of value relative to another row熊猫:选择相对于另一行的最后一次出现值的行
【发布时间】:2021-10-11 20:05:59
【问题描述】:

给定以下 if 语句:

if day_csv['Day of Week'].iloc[-7] != 'Monday':

我想选择星期一之前的所有行之前 iloc[-7](直到数据框的底部)。

我该怎么做呢?

数据框如下所示:

|日期 |星期几 |几列数字 |

感谢您的帮助!我没有找到任何重复的,如果这个有点简单,对不起。

编辑:

我实际上改变了我将如何执行此操作的想法 - 更容易仅显示过去 8-14 天左右。不过,为了学习/回答原始问题:

以下是一些示例数据:

Date Day of Week Offer Answer ... Last Week Same Day Percent Diff
2021-10-08 Friday 4821.0 2091.0 ... 1114.0 -0.046474
2021-10-09 Saturday 4821.0 2091.0 ... 121.0 0.153086
2021-10-10 Sunday 4821.0 2091.0 ... 4525.0 NaN
2021-10-11 Monday 8424.0 2095.0 ... 9553.0 0.26489
2021-10-12 Tuesday 8432.0 2095.0 ... 9235.0 0.3858
2021-10-13 Wednesday 4821.0 2091.0 ... 1114.0 -0.046474
2021-10-14 Thursday 4821.0 2091.0 ... 121.0 0.153086
2021-10-15 Friday 4821.0 2091.0 ... 4525.0 NaN
2021-10-16 Saturday 8424.0 2095.0 ... 9553.0 0.26489
2021-10-17 Sunday 8432.0 2095.0 ... 9235.0 0.3858
2021-10-18 Monday 8432.0 2095.0 ... 9235.0 0.3858
2021-10-18 Tuesday 8432.0 2095.0 ... 9235.0 0.3858

我已经编好了数字,因为它们并不重要。如果第 7 行是星期一,则操作的预期输出将是最后 7 行的选择,或者在此之前的星期一出现之后的所有行。因此,在这里,我们将选择这些行:

Date Day of Week Offer Answer ... Last Week Same Day Percent Diff
2021-10-11 Monday 8424.0 2095.0 ... 9553.0 0.26489
2021-10-12 Tuesday 8432.0 2095.0 ... 9235.0 0.3858
2021-10-13 Wednesday 4821.0 2091.0 ... 1114.0 -0.046474
2021-10-14 Thursday 4821.0 2091.0 ... 121.0 0.153086
2021-10-15 Friday 4821.0 2091.0 ... 4525.0 NaN
2021-10-16 Saturday 8424.0 2095.0 ... 9553.0 0.26489
2021-10-17 Sunday 8432.0 2095.0 ... 9235.0 0.3858
2021-10-18 Monday 8432.0 2095.0 ... 9235.0 0.3858
2021-10-18 Tuesday 8432.0 2095.0 ... 9235.0 0.3858

【问题讨论】:

  • 是否可以添加一些数据样本和预期输出?
  • 答案已编辑。

标签: python pandas


【解决方案1】:

您可以省略最后 6 行(如果可能,第 7 行是 Monday 通过索引,获取由 NaNs 由 Series.reindex 填充的原始值),比较 Monday 通过 Series.eq 与累积总和和最后一个过滤器按最大值:

s = day_csv['Day of Week'].iloc[:-6].reindex(day_csv.index).eq('Monday').cumsum()


df = day_csv[s.eq(s.max())]
print (df)
          Date Day of Week   Offer  Answer  ...  Last Week Same Day  \
3   2021-10-11      Monday  8424.0  2095.0  ...              9553.0   
4   2021-10-12     Tuesday  8432.0  2095.0  ...              9235.0   
5   2021-10-13   Wednesday  4821.0  2091.0  ...              1114.0   
6   2021-10-14    Thursday  4821.0  2091.0  ...               121.0   
7   2021-10-15      Friday  4821.0  2091.0  ...              4525.0   
8   2021-10-16    Saturday  8424.0  2095.0  ...              9553.0   
9   2021-10-17      Sunday  8432.0  2095.0  ...              9235.0   
10  2021-10-18      Monday  8432.0  2095.0  ...              9235.0   
11  2021-10-18     Tuesday  8432.0  2095.0  ...              9235.0   

    Percent Diff  
3       0.264890  
4       0.385800  
5      -0.046474  
6       0.153086  
7            NaN  
8       0.264890  
9       0.385800  
10      0.385800  
11      0.385800  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2019-02-22
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多