суммируйте df по уникальным значениям из двух разных столбцов

#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. Теперь я обновил сообщение