удаление строк из CSV на основе содержимого ячейки из другого CSV - PullRequest
0 голосов
/ 22 сентября 2018

Я сканирую список URL-адресов из CSV-файла, извлекаю информацию о кадре данных из каждого URL-адреса и экспортирую его в CSV-файл.он останавливается, когда попадает на страницу, на которой нет информации.Я хочу удалить URL-адреса из первого файла (они содержат номер лицензии), который я уже просканировал на основе номеров лицензий, которые я собрал из второго файла.Я могу легко сделать это в Excel, используя вспомогательную колонку, но понятия не имею, как это сделать с пандами.

например: я хочу удалить первые 2 строки (URL) в file1 на основе Lic # в file2.

File1(no headers)
www.1234.com
www.1235.com
www.1236.com

File2(LIC# is the header)
1234
1235

new urls (expected output back into File1)
www.1236

Я просмотрел здесь много примеров, и мне не удается обернуть его вокруг.

Я ценю любые комментарии и / или предложения.

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

Сначала создайте новый столбец, содержащий только среднюю часть URL

df1['site'] = dfs['dataset1'].apply(lambda x:x.split('.')[1])

Затем выполните внутреннее объединение обоих фреймов данных

df = df1.merge(df2,how='inner',left_on='site',right_on='dataset2')

Файл df содержит требуемый вывод.(Я предполагаю, что dataset1 и dataset2 являются именами столбцов)

0 голосов
/ 22 сентября 2018

если оба представляют собой разные кадры данных большого размера, вы можете использовать объединение или проверить его, выполнив итерацию df

df
    File1(no headers)
0   www.1234.com
1   www.1235.com
2   www.1236.com

df1
    File2(LIC# is the header)
0   1234
1   1235

df = df[~df['File1(no headers)'].apply(lambda y: any(map(lambda x :str(x) in y,df1['File2(LIC# is the header)'].tolist())))].reset_index(drop=True)

Out:

    File1(no headers)
0   www.1236.com
0 голосов
/ 22 сентября 2018

Хранение ваших 2 списков в x и переменной:

x=['www.1234.com','www.1235.com','www.1236.com']
a=['1234','1235']

Добавление www.и .com к вашему второму списку и сохранению в переменной b

b=[]
for i in a:
    b.append('www.'+i+'.com')

Создание желаемого результата

y = [s for s in x if s not in b]
y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...