Панды - удаление симметричных дубликатов в двух строках из кадра данных - PullRequest
0 голосов
/ 18 октября 2019

У меня есть следующие данные о потоках между странами:

import pandas as pd 
data = [['US','FR', 10,'a'], ['FR','US', 15,'b'], ['IT','BA', 14,'c']] 
df = pd.DataFrame(data, columns = ['Country_1', 'Country_2','var_1','var_2']) 
print(df)
  Country_1 Country_2  var_1 var_2
0        US        FR     10     12
1        FR        US     12     10
2        IT        BA     14     5

Это симметрично в том смысле, что все пары стран видны два раза. Моя цель - устранить симметричные дубликаты на основе двух столбцов Страна_1 и Страна_2 . В этом примере ожидаемый фрейм данных будет выглядеть так:

  Country_1 Country_2  var_1 var_2
0        US        FR     10     12
1        IT        BA     14     5

Один связанный вопрос имеет дело с одномерным случаем, но решение не работает при большом количестве переменных (var_11, var_12; var_21, var_22; var_31, var_32; ...).

Кто-нибудь сталкивался с этой проблемой раньше?

1 Ответ

0 голосов
/ 18 октября 2019

Использование:

#first remove all duplicates
df = df.drop_duplicates(['Country_1','Country_2'])

#sorted values in country columns and remove duplicates
m = pd.DataFrame(np.sort(df[['Country_1','Country_2']], axis=1), index=df.index).duplicated()

df = df[~m]
print (df)
  Country_1 Country_2  var_1 var_2
0        US        FR     10     a
2        IT        BA     14     c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...