Я пытаюсь проанализировать файл Excel, который имеет много листов.На каждом листе есть столбец со следующей информацией (3 листа = 3 столбца):
ReceivedEmail OpenedEmail ClickedURL
aaaa@aaa.com gggg@aaa.com aaaa@aaa.com
bbbb@aaa.com dddd@aaa.com rrrr@aaa.com
cccc@aaa.com rrrr@aaa.com
dddd@aaa.com aaaa@aaa.com
eeee@aaa.com oooo@aaa.com
ffff@aaa.com
gggg@aaa.com
rrrr@aaa.com
qqqq@aaa.com
oooo@aaa.com
Мне нужна отдельная таблица, в которой сохранен первый столбец первого листа, то есть тот, в котором есть все данные, касающиесяReceivedEmail (люди, которых мы отправили по электронной почте).Следующие столбцы должны быть каждым первым столбцом следующего листа, но вместо того, чтобы повторять электронные письма, я хочу использовать списочное понимание, чтобы проверить, существует ли OpenedEmail в ReceivedEmail и дать 1 , иначе дать 0 .
Вот что я сделал до сих пор:
import pandas as pd
xl = pd.ExcelFile(path_to_file)
xl.sheet_names
['ReceivedEmail', 'OpenedEmail', 'ClickedURL']
df = xl.parse(sheet_name=xl.sheet_names[0], header=None)
df.rename(columns={df.columns[0]:xl.sheet_names[0]}, inplace=True);
df.columns[0]
['ReceivedEmail']
# then I created a buffer dataframe to check next columns
df_buffer = xl.parse(sheet_name=xl.sheet_names[1], header=None)
df_buffer.rename(columns={df_buffer.columns[0]:xl.sheet_names[1]}, inplace=True);
Но затем, когда я запускаю понимание списка следующим образом:
df[df_buffer.columns[0]] = [1 if x in df[df.columns[0]] else 0 for x in df_buffer[df_buffer.columns[0]]]
Я получаю ошибку:
ValueError: длина значений не совпадает с длиной индекса
Есть какие-либо подсказки, как решить эту ошибку или решить проблему разумным способом?Я делаю вручную, чтобы увидеть, если это работает, то я мог бы сделать цикл позже, но я застрял с ошибкой.
Конечный результат должен быть:
ReceivedEmail OpenedEmail ClickedURL
aaaa@aaa.com 1 1
bbbb@aaa.com 0 0
cccc@aaa.com 0 0
dddd@aaa.com 1 0
eeee@aaa.com 0 0
ffff@aaa.com 0 0
gggg@aaa.com 1 0
rrrr@aaa.com 1 1
qqqq@aaa.com 0 0
oooo@aaa.com 1 0