Как создать условный столбец для двух наборов в окне ключа? ⇐ Python
-
Гость
Как создать условный столбец для двух наборов в окне ключа?
У меня есть две таблицы с информацией о пользователях розничной торговли, использованные в пред- и пост-периодах. Моя цель — выяснить, какие ритейлеры были новыми для пользователей в постпериод. Мне интересно, как это сделать в окне user_id, потому что решения is_in() и loc[] не подходят для моей задачи. Также я думал о фильтрации объединений (в частности, против объединения), но это не сработало. Вот пример данных:
sample1 = pd.DataFrame( { 'user_id': [45, 556, 556, 556, 556, 556, 556, 1344, 1588, 2063, 2063, 2063, 2673, 2982, 2982], 'Розничный торговец': ['Розничный_торговец_1', 'Розничный_торговец_1', 'Розничный торговец_2', 'Розничный торговец_3', 'Розничный_торговец_4', 'Розничный_торговец_5', 'Розничный торговец_6', 'Розничный_торговец_3', 'Розничный_торговец_2', 'Розничный_торговец_2', 'Розничный_торговец_3', 'Розничный_торговец_7', 'Розничный_торговец_1', 'Розничный_торговец_1', 'Розничный_торговец_2'] } ) образец2 = pd.DataFrame( { 'user_id': [45, 45, 556, 556, 556, 556, 556, 556, 1344, 1588, 2063, 2063, 2063, 2673, 2673, 2982, 2982], 'Розничный торговец': ['Розничный_торговец_1', 'Розничный_торговец_6', 'Розничный торговец_1', 'Розничный торговец_2', 'Розничный_торговец_3', 'Розничный_торговец_4', 'Розничный_торговец_5', 'Розничный_торговец_6', 'Розничный_торговец_3', 'Розничный_торговец_2', 'Розничный_торговец_2', 'Розничный_торговец_3', 'Розничный торговец_7', 'Розничный_торговец_1', 'Розничный_торговец_2', 'Розничный_торговец_1', 'Розничный_торговец_2'] } ) Мой желаемый результат таков:
{'user_id': {0: 45, 1: 45, 2: 556, 3: 556, 4: 556, 5: 556, 6: 556, 7: 556, 8: 1344, 9: 1588, 10: 2063, 11: 2063, 12: 2063, 13: 2673, 14: 2673, 15: 2982, 16: 2982}, 'retailer': {0: 'retailer_1', 1: 'retailer_6', 2: 'retailer_1', 3: 'retailer_2', 4: 'retailer_3', 5: 'retailer_4', 6: 'retailer_5', 7: 'retailer_6', 8: 'retailer_3', 9: 'retailer_2', 10: 'retailer_2' ', 11: 'retailer_3', 12: 'retailer_7', 13: 'retailer_1', 14: 'retailer_2', 15: 'retailer_1', 16: 'retailer_2'}, 'is_new_retailer': {0: 0, 1: 1, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:1, 15:0, 16:0}}
У меня есть две таблицы с информацией о пользователях розничной торговли, использованные в пред- и пост-периодах. Моя цель — выяснить, какие ритейлеры были новыми для пользователей в постпериод. Мне интересно, как это сделать в окне user_id, потому что решения is_in() и loc[] не подходят для моей задачи. Также я думал о фильтрации объединений (в частности, против объединения), но это не сработало. Вот пример данных:
sample1 = pd.DataFrame( { 'user_id': [45, 556, 556, 556, 556, 556, 556, 1344, 1588, 2063, 2063, 2063, 2673, 2982, 2982], 'Розничный торговец': ['Розничный_торговец_1', 'Розничный_торговец_1', 'Розничный торговец_2', 'Розничный торговец_3', 'Розничный_торговец_4', 'Розничный_торговец_5', 'Розничный торговец_6', 'Розничный_торговец_3', 'Розничный_торговец_2', 'Розничный_торговец_2', 'Розничный_торговец_3', 'Розничный_торговец_7', 'Розничный_торговец_1', 'Розничный_торговец_1', 'Розничный_торговец_2'] } ) образец2 = pd.DataFrame( { 'user_id': [45, 45, 556, 556, 556, 556, 556, 556, 1344, 1588, 2063, 2063, 2063, 2673, 2673, 2982, 2982], 'Розничный торговец': ['Розничный_торговец_1', 'Розничный_торговец_6', 'Розничный торговец_1', 'Розничный торговец_2', 'Розничный_торговец_3', 'Розничный_торговец_4', 'Розничный_торговец_5', 'Розничный_торговец_6', 'Розничный_торговец_3', 'Розничный_торговец_2', 'Розничный_торговец_2', 'Розничный_торговец_3', 'Розничный торговец_7', 'Розничный_торговец_1', 'Розничный_торговец_2', 'Розничный_торговец_1', 'Розничный_торговец_2'] } ) Мой желаемый результат таков:
{'user_id': {0: 45, 1: 45, 2: 556, 3: 556, 4: 556, 5: 556, 6: 556, 7: 556, 8: 1344, 9: 1588, 10: 2063, 11: 2063, 12: 2063, 13: 2673, 14: 2673, 15: 2982, 16: 2982}, 'retailer': {0: 'retailer_1', 1: 'retailer_6', 2: 'retailer_1', 3: 'retailer_2', 4: 'retailer_3', 5: 'retailer_4', 6: 'retailer_5', 7: 'retailer_6', 8: 'retailer_3', 9: 'retailer_2', 10: 'retailer_2' ', 11: 'retailer_3', 12: 'retailer_7', 13: 'retailer_1', 14: 'retailer_2', 15: 'retailer_1', 16: 'retailer_2'}, 'is_new_retailer': {0: 0, 1: 1, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:1, 15:0, 16:0}}