В Python используются кадры данных Pandas:
dataframe_1:
id
0 AB17
1 AB18
2 AB19
3 AB20
4 AB10
dataframe_2:
id
0 AB20
1 AB10
2 AB17
3 AB21
4 AB09
Здесь dataframe_2 содержит AB20, AB10 и AB17 же, как dataframe_1 в случайном порядке.
Как проверить, какие элементы в dataframe_2 являются новыми и которые являются такими же, как dataframe_1???
Я думаю, что нужна isin
для логической маски и фильтра по loc
с boolean indexing
, при необходимости конвертировать выходные Series
в list
:
mask = dataframe_2['id'].isin(dataframe_1['id'])
print (mask)
0 True
1 True
2 True
3 False
4 False
Name: id, dtype: bool
same = dataframe_2.loc[mask, 'id'].tolist()
diff = dataframe_2.loc[~mask, 'id'].tolist()
#if want unique values
#same = dataframe_2.loc[mask, 'id'].unique().tolist()
#diff = dataframe_2.loc[~mask, 'id'].unique().tolist()
print (same)
['AB20', 'AB10', 'AB17']
print (diff)
['AB21', 'AB09']
Используйте isin
как:
df2.id.isin(df1.id)
0 True
1 True
2 True
3 False
4 False
Name: id, dtype: bool