Как соединить строки и объединить фреймы данных, полученные в результате concurrent.futures? - PullRequest
1 голос
/ 05 августа 2020

У меня есть функция check_status, которая вводит i и выводит [a, b], в которой a - это строка, а b - это фрейм данных. Чтобы ускорить l oop, я использую concurrent.futures. Не могли бы вы объяснить, как объединить все строки a и объединить весь фрейм данных b?

import pandas as pd
import concurrent.futures
import requests
session = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}

# Define a dictionary containing links 
data = {'Link': ['https://www.collinsdictionary.com/dictionary/french-english/aimer',
                 'https://www.collinsdictionary.com/dictionary/english-french/graduate',
                 'https://www.collinsdictionary.com/dictionary/english-french/apple',
                 'https://www.collinsdictionary.com/dictionary/english-french/apricot'], 
                'Status': [0, 0, 0, 0]} 

# Generate datafrane df
df = pd.DataFrame(data, columns = ['Link', 'Status']) 

#Generate function to check status of a link
def check_status(i):
    r = session.get(df.at[i, 'Link'], headers = headers)
    if r.status_code == 200:
        df.at[i, 'Status'] = 1
        return 'ok', pandas.DataFrame({'LINK': ['abc'], 'CODE': [i]})  
    else:
        return 'not ok'

with concurrent.futures.ThreadPoolExecutor(max_workers = 5) as exe:
    results = [exe.submit(check_status, i) for i in [0, 1, 2, 3]]
...