У меня есть pandas фрейм данных, в котором есть информация об отклонениях. Немного предыстории проблемы: отправитель электронной почты может отправлять одно и то же письмо несколько раз, но это разрешается только один раз. Я хочу по-прежнему учитывать сообщения электронной почты с тем же отправителем и тем же сообщением, что и «решено», в новом столбце.
Начальный фрейм данных выглядит следующим образом:
data = [['Sent from automated email', 'jim@yahoo.com', 'Resolved','2020-01-13 07:06:34'],
['Sent from automated email', 'jim@yahoo.com', 'Rejected','2020-01-13 07:06:39'],
['Hello I would like for you to make an update please','new101@cnn.com', 'Resolved', '2020-02-14 09:06:39'],
['Hello I would like for you to make an update please','new101@cnn.com', 'Rejected', '2020-02-14 09:06:41'],
['Hello I would like for you to make an update please','new101@cnn.com', 'Resolved', '2020-02-14 09:06:59'],
['Take one newspaper','notneeded@gmail.com', 'Resolved', '2020-02-17 09:05:39'],
['Hey hows it going','jamie@gmail.com', 'Rejected', '2020-03-12 09:03:42'],
]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Message', 'Email','Resolution','Time Sent'])
Я хочу взять все письма, которые имеют одного и того же отправителя и одно и то же сообщение, но разные разрешения и пометить их как «разрешенные», если любые из предыдущих писем были разрешены. Мой желаемый результат будет:
data = [['Sent from automated email', 'jim@yahoo.com', 'Resolved','2020-01-13 07:06:34','Resolved' ],
['Sent from automated email', 'jim@yahoo.com', 'Rejected','2020-01-13 07:06:39','Resolved'],
['Hello I would like for you to make an update please','new101@cnn.com', 'Resolved', '2020-02-14 09:06:39','Resolved'],
['Hello I would like for you to make an update please','new101@cnn.com', 'Rejected', '2020-02-14 09:06:41','Resolved'],
['Hello I would like for you to make an update please','new101@cnn.com', 'Resolved', '2020-02-14 09:06:59','Resolved'],
]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Message', 'Email','Resolution','Time Sent','Real Resolution'])
Я попытался написать функцию, как показано ниже:
def a(df):
if df[df['message'].duplicated()] & df[(df['resolution'] == 'Rejected') | (df['resolution'] == 'Resolved') ] & df[df['Email].duplicated()]:
df['Real Resolution'] = 'Resolved'
df['Real Resolution'] = df.apply(a)
Я не думаю, что это правильно, так как я не учитываю только дублированные сообщения которые разрешены, а затем отклонены. Какие-нибудь советы? Спасибо!