Учитывая данные кадра следующим образом:
city district date price
0 bj cy 2019-03-01 NaN
1 bj cy 2019-04-01 6.0
2 sh hp 2019-03-01 4.0
3 sh hp 2019-04-01 3.0
4 bj hd 2019-03-01 7.0
5 bj hd 2019-04-01 NaN
Мне нужно отфильтровать сгруппированные строки city
и district
, когда были выполнены оба следующих условия: date
равно 2019-04-01
и price
- это NaN
.
Я проверил следующий код:
df['date'] = pd.to_datetime(df['date']).dt.date.astype(str)
df.groupby(['city','district']).filter(lambda x: (x['price'].isnull() & x['date'].isin(['2019-04-01'])).any())
Out:
city district date price
4 bj hd 2019-03-01 7.0
5 bj hd 2019-04-01 NaN
Еще один тест:
df.groupby(['city','district']).filter(lambda x: (x['price'].isnull() & x['date']).any())
Out:
city district date price
0 bj cy 2019-03-01 NaN
1 bj cy 2019-04-01 6.0
4 bj hd 2019-03-01 7.0
5 bj hd 2019-04-01 NaN
Но мне нужно, как показано ниже. Как я могу изменить код выше? Большое спасибо.
city district date price
0 bj cy 2019/3/1 NaN
1 bj cy 2019/4/1 6.0
2 sh hp 2019/3/1 4.0
3 sh hp 2019/4/1 3.0