Учитывая У меня есть следующий файл CSV data.csv
:В pandas, как мне выполнить фильтрацию на объекте DataframeGroupBy?
id,category,price,source_id
1,food,1.00,4
2,drink,1.00,4
3,food,5.00,10
4,food,6.00,10
5,other,2.00,7
6,other,1.00,4
Я хочу, чтобы сгруппировать данные по (цена, SOURCE_ID), и я делаю это с помощью следующего кода
import pandas as pd
df = pd.read_csv('data.csv', names=['id', 'category', 'price', 'source_id'])
grouped = df.groupby(['price', 'source_id'])
valid_categories = ['food', 'drink']
for price_source, group in grouped:
if group.category.size < 2:
continue
categories = group.category.tolist()
if 'other' in categories and len(set(categories).intersection(valid_categories)) > 0:
pass
"""
Valid data in this case is:
1,food,1.00,4
2,drink,1.00,4
6,other,1.00,4
I will need all of the above data including the id for other purposes
"""
Есть альтернативный способ для выполнения вышеуказанной фильтрации в пандах перед циклом for, и если это возможно, будет ли она быстрее, чем указано выше?
Критерии для фильтрации является:
- размера группы больше, чем 1
- группы данных должна содержать категорию
other
и по меньшей мере один из обоегоfood
илиdrink