Проверьте, совпадают ли какие-либо строки из одного столбца с какими-либо строками из другого столбца. - PullRequest
0 голосов
/ 15 февраля 2020

У меня такая ситуация:

lst = ["Apple", "Apple", "Apple small", "Orange", "FruitX", "FruitY"]
lst2 = ["Apple", "Orange", "Fruit1", "Fruit2"]

Где lst и lst2 - это серии pandas (или я должен сказать столбцы в кадре данных).

Мне нужно найти, какие значений из lst2 находятся в lst и, в конце концов, создают фрейм данных со следующими результатами (в идеале с количеством совпадающих значений и с возможностью добавления других столбцов из lst ():

lst2     lst        match_count    other_colum_from_lstDF    other_colum_from_lstDF
Apple    Apple      2              info1                     info2
Apple    Apple      2              info1                     info2
Orange   Orange     1              info1                     info2
Fruit1   nan        0              nan                       nan
Fruit2   nan        0              nan                       nan

Таким образом, вы можете сопоставить несколько значений от lst до одного значения из lst2, поэтому мне нужно, чтобы результаты дублировались, как указано выше, в идеале с количеством совпадающих значений.

Я думаю, что правильным способом будет использование isin но не смог понять как.

1 Ответ

0 голосов
/ 15 февраля 2020

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

df_merge = pd.merge(df2, df1, how = 'left', left_on = 'lst2', right_on = 'lst')
df_merge['match_count'] = df_merge.groupby(['lst'])['lst'].transform('count').fillna(0)
df_merge = df_merge[['lst2','lst','match_count','info1']]

Вывод:

    lst2    lst match_count info1
0   Apple   Apple   2.0     info1
1   Apple   Apple   2.0     info1
2   Orange  Orange  1.0     info1
3   Fruit1  NaN     0.0      NaN
4   Fruit2  NaN     0.0      NaN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...