У меня есть следующий фрейм данных:
Timestamp id lat long
0 665047 a 30.508420 -84.372882
1 665047 b 30.491882 -84.372938
2 2058714 b 30.492026 -84.372938
3 665348 a 30.508420 -84.372882
4 2055292 b 30.491899 -84.372938
Мой желаемый результат должен иметь:
Timestamp a b
0 665047 [30.508420, -84.372882] [30.491882, -84.372938]
1 665348 [30.508420, -84.372882] NaN
2 2055292 NaN [30.491899, -84.372938]
3 2058714 NaN [30.492026, -84.372938]
Где уникальные значения, найденные в df.id
, становятся заголовками столбцов (могут бытьнесколько тысяч из них), с широтой и долготой в качестве значений.
Ближайшее, что я пришел, использует:
for i, r in df.iterrows():
dct[r.Timestamp].append([r.id, r.lat, r.long])
pd.DataFrame.from_dict(dct, orient='index')
0 1
2055292 [b, 30.491899, -84.372938] None
2058714 [b, 30.492026, -84.372938] None
665348 [a, 30.50842, -84.37288199999999] None
665047 [a, 30.50842, -84.37288199999999] [b, 30.491882, -84.372938]
Но я знаю, что использование любого вида итерации плохо для панд (и это далеко не соответствует моему желаемому результату), и я уверен, что есть гораздо более простой способ.