У меня есть кадр данных, который выглядит следующим образом:
a = [
{'x': 1, 'y': 1, 'q': [], 'obj': 901},
{'x': 1, 'y': 2, 'q': [(3, 3)], 'obj': 907},
{'x': 1, 'y': 3, 'q': [], 'obj': 884},
{'x': 2, 'y': 1, 'q': [(2, 2), (3, 3)], 'obj': 485},
{'x': 2, 'y': 2, 'q': [], 'obj': 814},
{'x': 2, 'y': 3, 'q': [], 'obj': 491},
{'x': 3, 'y': 1, 'q': [], 'obj': 822},
{'x': 3, 'y': 2, 'q': [], 'obj': 752},
{'x': 3, 'y': 3, 'q': [(1, 3), (2, 1)], 'obj': 739}
]
df = pd.DataFrame(a)
Я хочу добавить новый столбец, ref
, который представляет собой список obj
для каждой ссылки (x, y)
в q
,Я знаю, что могу перебирать q
для каждой строки, но это медленно и глупо.
Результат должен выглядеть следующим образом:
obj q ref x y
0 901 [] NaN 1 1
1 907 [(3, 3)] [907] 1 2
2 884 [] NaN 1 3
3 485 [(2, 2), (3, 3)] [814, 739] 2 1
4 814 [] NaN 2 2
5 491 [] NaN 2 3
6 822 [] NaN 3 1
7 752 [] NaN 3 2
8 739 [(1, 3), (2, 1)] [884, 485] 3 3
Каким образом панды решают эту проблему?