加快pandas DataFrame中每一行的发布请求[重复]

Posted

技术标签:

【中文标题】加快pandas DataFrame中每一行的发布请求[重复]【英文标题】:Speed up a post request for every row in pandas DataFrame [duplicate] 【发布时间】:2021-09-12 05:37:24 【问题描述】:

假设我有以下数据框

| id | info       | cost |

| 1 | some string | 123 | 

数据框的整个shape13534 行。对于每一行,我需要创建一个post request,类似于

'id': 1, 'info': 'some string', 'cost': 123

使用 for 循环会很慢。有什么方法可以加快这个过程吗?也许threading?有没有人有一个很好的例子来使用threading 来解决这个任务?

【问题讨论】:

【参考方案1】:

使用to_dict:

result = df.to_dict('records')

输出:

['id': 1, 'info': 'some string', 'cost': 123]

【讨论】:

感谢您的回答。他们的主要问题是如何加快数据框中每一行的发布请求 与迭代大 df 相比,迭代字典要快得多。 @AlexNikitin 是的,你是对的,谢谢【参考方案2】:

出于任何原因,您是否需要在进入下一行之前完成每个 POST 请求,还是每行都独立于其他行?

根据您对行可以独立处理的回答,您可以使用线程方法,尽管对于许多输入/输出操作,您可能会发现异步编程将最大化线程的利用率,而不管您有多少线程采用。内置包 asyncio 或第三方库(例如 aiohttp)可能适合您的用例。不知道更多,很难评论。对于线程,由于您只是从数据帧中读取,因此您不需要使用任何锁、信号量等,因为没有竞争条件的风险,您将通过使用 @nk03 的建议使用 df.to_dict('records') 看到进一步的收益.

【讨论】:

谢谢你的回答,他们可以独立

以上是关于加快pandas DataFrame中每一行的发布请求[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 Pandas 数据框中的所有列相乘

将 Pandas 数据框中的所有列相乘

如何加快pandas groupby bins的agg?

使用 SqlAlchemy 和 cx_Oracle 将 Pandas DataFrame 写入 Oracle 数据库时加快 to_sql()

计算数据框中每一行的概率

比较 Pandas DataFrame 中的前一行值