您好,我正在尝试根据一些条件删除行,并且需要一些帮助。我有一个具有这种结构的数据框,假设有更多列:
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问题,但不确定如何获取最新日期并删除整个行。任何帮助表示赞赏。
答案 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