#python #pandas #numpy
#питон #панды #тупица
Вопрос:
допустим, у меня есть следующий df:
Происхождение | Широта | Длинный | Место назначения | Широта | Длинный |
---|---|---|---|---|---|
A | -6.925767 | 52.837445 | B | -6.939444 | 52.836141 |
A | -6.925767 | 52.837445 | C | -6.717989 | 52.887184 |
B | -6.939444 | 52.836141 | A | -6.925767 | 52.837445 |
B | -6.939444 | 52.836141 | C | -6.717989 | 52.887184 |
Мне нужно получить df в следующей форме
Уникальное Расположение | Широта | Длинный |
---|---|---|
A | -6.925767 | 52.837445 |
B | -6.939444 | 52.836141 |
C | -6.717989 | 52.887184 |
есть ли быстрый способ сделать это с помощью NumPy/pandas? Я пытался разделить данные на два df, а затем объединить их вместе, но, похоже, это вообще неэффективный способ.
Ответ №1:
Использовать pd.concat
и drop_duplicates
:
gt;gt;gt; pd.concat([df.iloc[:, :3].rename(columns={'Origin': 'Unique Location'}), df.iloc[:, 3:].rename(columns={'Destination': 'Unique Location'})]) .drop_duplicates().reset_index(drop=True) Unique Location Lat Long 0 A 1 3 1 B 5 3 2 C 7 3
Комментарии:
1. согласен, я думаю, что это лучший способ, хотя ОП хотел избежать разделения-присоединиться
2. @tdy, Трудно сделать по-другому, кроме использования
networkx
3. Спасибо, Корралиен. Единственное, что длинные значения в моих исходных данных также меняются, а не фиксируются, как я указал в своем примере.
4. Можете ли вы обновить свой пост реальным случаем и ожидаемым результатом, пожалуйста?
5. Теперь я обновил сообщение