1
有人可以告诉我一种方法来将数据添加到python中的数据框中,而多线程将使用一个函数,其中的数据必须附加到数据框中......?多个线程中的熊猫数据框
我的代码从URL中提取数据,然后我使用df.loc [index] ... 将废弃行添加到数据框中。
因为我已经开始了一个多线程,它基本上将每个URL分配给每个线程。 所以简而言之,许多页面一次被刮掉......
如何将这些行追加到数据框中?
有人可以告诉我一种方法来将数据添加到python中的数据框中,而多线程将使用一个函数,其中的数据必须附加到数据框中......?多个线程中的熊猫数据框
我的代码从URL中提取数据,然后我使用df.loc [index] ... 将废弃行添加到数据框中。
因为我已经开始了一个多线程,它基本上将每个URL分配给每个线程。 所以简而言之,许多页面一次被刮掉......
如何将这些行追加到数据框中?
不建议将数据行逐个添加到数据框。我建议你在列表中构建数据,然后在最后组合这些列表,然后在完整的数据集上只调用一次DataFrame构造函数。
例子:
# help from http://stackoverflow.com/a/28463266/3393459
# and http://stackoverflow.com/a/2846697/3393459
from multiprocessing.dummy import Pool as ThreadPool
import requests
import pandas as pd
pool = ThreadPool(4)
# called by each thread
def get_web_data(url):
return {'col1': 'something', 'request_data': requests.get(url).text}
urls = ["http://google.com", "http://yahoo.com"]
results = pool.map(get_web_data, urls)
print results
print pd.DataFrame(results)
谢谢。这是肯定的一个想法。 如何管理解决方法以索引每个列表?由于任何线程都可以随时生成任何列表名称。所以给一个索引开始,然后逐一增加它可能不是正确的选择... –
不确定你的意思。我发布了示例代码,以便我们可以更具体地进行交谈。多处理我的理解是,你不能对结果返回的顺序有任何保证......如果你想发布你的代码,那也可能是有帮助的。 – exp1orer
我只是把你的列表建议,只是将所有的数据附加到列表中,然后最终转移到熊猫数据框,它完美地适合我的情况!非常感谢 :) –