Панды, как добавить счетчики для сопоставления строк между двумя столбцами данных - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть два кадра данных, в которые я хотел бы добавить еще один столбец счетчика для сопоставления строк между этими строками данных.

df1:

Id   val1  val2   val3
0     ab     ba     sx
1     bc     dc     xy
2.    ab     ba     ux

df2:

Id   val1  val2   val3
0     ab     ba      zx
1     bc     dc      vy

Ожидаемый результат: df3:

Id   val1  val2   val3  counter
0     ab     ba     sx       1
1     bc     dc     xy      1
2.    ab     ba     ux      2

Я хочу здесь сопоставить столбцы val1 и val2 и добавить счетчик в df3 для сопоставленных строк между этими кадрами данных df1 и df2 .

Любая помощь будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Сначала найдите соответствующие строки с помощью внутреннего слияния, затем используйте groupby + cumcount, чтобы добавить счетчик:

res = df1.merge(df2.drop(['Id', 'val3'], 1), on=['val1', 'val2'], how='inner')\
         .sort_values('Id').reset_index(drop=True)

res['Counter'] = res.groupby(['val1', 'val2']).cumcount() + 1

print(res)

   Id val1 val2 val3  Counter
0   0   ab   ba   sx        1
1   1   bc   dc   xy        1
2   2   ab   ba   ux        2
0 голосов
/ 23 ноября 2018

Не ясно, что вы хотите для вывода, но это может помочь вам:

dfa = df1.groupby(['val1', 'val2'], as_index = false).size().rename(columns{0,'counter'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...