根据列的特定日期时间和条件删除行

时间:2020-06-23 17:54:43

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

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

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_a,{{1 }}和col_b的{​​{1}}值。假设col_c列将是唯一的,并且我必须扫描每个唯一的值。因此,结果数据框应为:

0

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

1 个答案:

答案 0 :(得分: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