Мне нужна помощь для объединения двух наборов данных в pandas.
Мой первый набор данных - это набор данных контактов, включая имя и идентификатор. Второй - это набор данных сделок, который среди других полей включает один столбец с несколькими идентификаторами контактов, разделенными запятыми. Я хотел бы присоединить набор данных сделок к набору данных контактов, где идентификатор контакта совпадает с одним из идентификаторов в поле «связанные контакты».
contacts_df = pd.DataFrame(
{'name': ['John Smith', 'Jane Doe', 'James Bond'],
'id': [1,2,3]}
deals_df = pd.DataFrame(
{'deal_name': ['McDonalds', 'KFC'],
'associated_contacts':['1,3','2']}
Я разбил контакты в кадре данных сделок на четыре разных столбца:
deals_df[['Contact ID 1','Contact ID 2','Contact ID 3', 'Contact ID 4']] = deals_df['associated_contacts'].str.split(',',expand=True)
И попытался присоединить это к набору данных контактов:
merged = contacts_df.merge(deals_df, how='left', left_on='id',
right_on=['Contact ID 1','Contact ID 2','Contact ID 3','Contact ID 4'])
Но это вернуло ValueError:
ValueError: len(right_on) must equal len(left_on)
Может Кто-нибудь, помогите мне присоединиться к этим двум наборам данных, пожалуйста? Я думаю, что в моем наборе данных каждый контакт будет связан только с одной сделкой. Но сделка может иметь несколько контактов, и я хотел бы видеть сделку, связанную с каждым.