【问题标题】:Delete row based on specific datetime and conditions columnwise根据特定的日期时间和条件逐列删除行
【发布时间】:2020-06-23 17:54:43
【问题描述】:

大家好,我正在尝试根据一些条件删除行,需要一些帮助。假设有更多列,我有一个具有这种结构的数据框:

date     city    col_a    col_b    col_c ... 
1/22/20  la      0        0        0
1/23/20  la      0        0        0
1/24/20  la      0        0        0
1/22/20  ny      3        0        1
1/23/20  ny      0        1        1
1/24/20  ny      0        1        0
1/22/20  sf      0        0        0
1/23/20  sf      0        2        0
1/24/20  sf      2        0        0
.
.
.

我想根据city 和该城市的最新日期扫描数据框,如果该城市的最新日期有col_acol_bcol_c,则删除整组行0 的值。假设city 列是唯一的,我必须扫描每个唯一值。所以结果数据框应该是:

date     city    col_a    col_b    col_c ... 
1/22/20  ny      3        0        1
1/23/20  ny      0        1        1
1/24/20  ny      0        1        0
1/22/20  sf      0        0        0
1/23/20  sf      0        2        0
1/24/20  sf      2        0        0
.
.
.

我假设这是一个 groupby 问题,但不确定如何获取最新日期并删除整个行。任何帮助表示赞赏。

【问题讨论】:

    标签: python python-3.x pandas dataframe datetime


    【解决方案1】:

    我们可以transform + all

    df = df[~df.filter(like='col').eq(0).all(1).groupby(df.city).transform(all)]
    Out[389]: 
          date city  col_a  col_b  col_c
    3  1/22/20   ny      3      0      1
    4  1/23/20   ny      0      1      1
    5  1/24/20   ny      0      1      0
    6  1/22/20   sf      0      0      0
    7  1/23/20   sf      0      2      0
    8  1/24/20   sf      2      0      0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 2018-11-11
      • 1970-01-01
      • 2020-01-02
      • 2016-02-22
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多