Без примеров данных из OP, я буду использовать простой пример для демонстрации. Я надеюсь, что это то, что вам нужно, или, по крайней мере, можете немного изменить его, чтобы добиться того, чего вы хотите.
После прочтения вашего OP (вместе с вашими комментариями), я думаю, вы должны хранить списки пересечений в словаре, например:
intersections = {'01/01/2018': ['ObjectA','ObjectC'], '01/02/2018': ['ObjectA','ObjectD'], etc.....}
Для этого:
df = pd.DataFrame([['01/01/2018', 'ObjectA', 0, 0, 0, 1],['01/01/2018', 'ObjectE', 0, 1, 1, 1],['01/02/2018', 'ObjectB', 0, 0, 0, 0],
['01/04/2018', 'ObjectD', 0, 1, 1, 0],['01/02/2018', 'ObjectE', 1, 1, 0, 1],['01/03/2018', 'ObjectB', 0, 0, 0, 0],
['01/01/2018', 'ObjectC', 0, 1, 1, 0],['01/03/2018', 'ObjectA', 1, 1, 0, 1],['01/04/2018', 'ObjectD', 0, 0, 0, 0]],
columns=['Date','Object','x1','x2','x3','x4'])
Date Object x1 x2 x3 x4
0 01/01/2018 ObjectA 0 0 0 1
1 01/01/2018 ObjectE 0 1 1 1
2 01/02/2018 ObjectB 0 0 0 0
3 01/04/2018 ObjectD 0 1 1 0
4 01/02/2018 ObjectE 1 1 0 1
5 01/03/2018 ObjectB 0 0 0 0
6 01/01/2018 ObjectC 0 1 1 0
7 01/03/2018 ObjectA 1 1 0 1
8 01/04/2018 ObjectD 0 0 0 0
Группировка по 'Date'
:
grouped = df.groupby('Date')
intersections = {key: list(set(grouped.get_group(key)['Object'])) for key, val in grouped}
Дает:
{'01/01/2018': ['ObjectE', 'ObjectA', 'ObjectC'], '01/02/2018': ['ObjectE', 'ObjectB'], '01/03/2018': ['ObjectA', 'ObjectB'], '01/04/2018': ['ObjectD']}
Затем примените фильтры из словаря пересечений:
out = [df[(df['Date']==key) & (df['Object'].isin(val))] for key, val in intersections.items()]
Дает:
Date Object x1 x2 x3 x4
0 01/01/2018 ObjectA 0 0 0 1
1 01/01/2018 ObjectE 0 1 1 1
6 01/01/2018 ObjectC 0 1 1 0
Date Object x1 x2 x3 x4
2 01/02/2018 ObjectB 0 0 0 0
4 01/02/2018 ObjectE 1 1 0 1
Date Object x1 x2 x3 x4
5 01/03/2018 ObjectB 0 0 0 0
7 01/03/2018 ObjectA 1 1 0 1
Date Object x1 x2 x3 x4
3 01/04/2018 ObjectD 0 1 1 0
8 01/04/2018 ObjectD 0 0 0 0