У меня есть набор данных с несколькими повторяющимися полями 'Email', который я хотел бы использовать в качестве уникального идентификатора. Однако каждый дубликат содержит уникальную информацию о пользовательских тегах, которые я хотел бы скомпилировать и сохранить перед удалением.
ПРИМЕР:
import pandas as pd
import numpy as np
df = pd.DataFrame([[1234, 'Customer A', '123 Street', np.nan, np.nan],
[1234, 'Customer A', np.nan, '333 Street', np.nan],
[1234, 'Customer A', '12345 Street', np.nan, np.nan],
[1234, 'Customer A', np.nan, np.nan, np.nan],
[1233, 'Customer B', '444 Street', '3335 Street', np.nan],
[1233, 'Customer B', '555 Street', '666 Street', np.nan],
[1233, 'Customer B', '553 Street', '666 Street', 'abc@email.com'],
[1235, 'Customer C', '1553 Street', '644 Street', 'abc@email.com'],
[1235, 'Customer C', '2553 Street', '644 Street', 'abc@email.com']],
columns=['ID', 'Customer', 'Billing Address', 'Shipping Address', 'Contact'])
df.head()
ID Customer Billing Address Shipping Address Contact
0 1234 Customer A 123 Street NaN NaN
1 1234 Customer A NaN 333 Street NaN
2 1234 Customer A 12345 Street NaN NaN
3 1234 Customer A NaN NaN NaN
4 1233 Customer B 444 Street 3335 Street NaN
Я хочу объединитьContact
информация для каждой строки с пометкой «Клиент А» в последней строке, разделенная ,
Конечным результатом будет NaN, NaN, NaN, NaN
(или любые другие строковые данные в каждом поле, просто объединенные и разделенные столбцом).
Вот что я попробовал, но должно быть более элегантное решение. После сортировки по Email
полю:
def row_clean(df):
for i in range(0, len(df)-1):
if df.loc[i,'Customer'] == np.NaN:
return df
elif df.loc[i,'Customer'] == df.loc[(i+1),'Customer']:
df.loc[(i+1),'Contact'] = str(df.loc[(i+1),'Contact']) + ', ' + str(df.loc[i,'Contact'])
return df
row_clean(df)
Есть мысли здесь? Спасибо!