Python 如何使用条件删除列中每个值的行?
我有以下数据帧:Python 如何使用条件删除列中每个值的行?,python,pandas,Python,Pandas,我有以下数据帧: df = pd.DataFrame({'No': [0,0,0,1,1,2,2], 'date':['2020-01-15','2019-12-16','2021-03-01', '2018-05-19', '2016-04-08', '2020-01-02', '2020-03-07']}) df.date =pd.to_datetime(df.date) No date 0 0 2018-01-15 1 0
df = pd.DataFrame({'No': [0,0,0,1,1,2,2],
'date':['2020-01-15','2019-12-16','2021-03-01', '2018-05-19', '2016-04-08', '2020-01-02', '2020-03-07']})
df.date =pd.to_datetime(df.date)
No date
0 0 2018-01-15
1 0 2019-12-16
2 0 2021-03-01
3 1 2018-05-19
4 1 2016-04-08
5 2 2020-01-02
6 2 2020-03-07
如果No
列中每个唯一数字的date
值都早于2020-01-01
,我想删除行,即我想删除索引为3和4的行。是否可以在没有for循环的情况下执行此操作?使用groupby和transform:
>>> df[df.groupby('No')['date'].transform('max')>='2020-01-01']
No date
0 0 2020-01-15
1 0 2019-12-16
2 0 2021-03-01
5 2 2020-01-02
6 2 2020-03-07
这是一个简短且非常好的解决方案。非常感谢。