python - 如何加快熊猫数据框迭代
问题描述
我们在项目中使用了 pandas 数据框,我们意识到由于 pandas 数据框的计算速度很慢,我们的程序非常慢。我与您分享了我们的代码。
df_item_in_desc = pd.DataFrame(columns = df.columns) # to hold all satisfied results
for index in df.shape[0]:
s1 = set(df.iloc[index]['desc_words_short'])
if item_number in s1:
df_item_in_desc = df_item_in_desc.append(df.iloc[index])
我们检查是否项目名称在另一列中,desc_words_short
然后我们将该行附加到另一个数据框(df_item_in_desc
)。这是一个简单的逻辑,但要获得这样的行,我们应该遍历所有数据帧并检查该条件。我们的数据框有点大,运行此代码需要更多时间。我们怎样才能加快这个过程,我们可以Cpu parallelization
在这个任务中使用,还是别的什么?
注意:我们实际上尝试了 Cpu 并行化,但不会成功。
解决方案
所以看起来你正在遍历每一行并查看desc_words_short
列的值。对于每个值,如果该值(可能是列表)包含item_number
,那么您希望将该行添加到df_item_in_desc
.
如果这是目标,您可以像这样加快速度:
import pandas as pd
item_number = 'a'
df = pd.DataFrame({'desc_words_short':[['a','a','b'],['b','d'],['c','c']]})
print(df)
desc_words_short
0 [a, a, b]
1 [b, d]
2 [c, c]
mask = df['desc_words_short'].apply(lambda x: item_number in x)
df_item_in_desc = df.loc[mask]
print(df_item_in_desc)
desc_words_short
0 [a, a, b]
我不确定重点set
是什么,就像item_number
在完整列表或集合中一样,所以这是一个毫无意义的额外计算
推荐阅读
- python - 如何加快即使使用 Numba 也很慢的计算
- javascript - REACT JS:如何在地图内向尚未启动的数组添加键?
- solidity - 从 ERC271 合约继承有什么意义?
- c# - asp-for 标签助手显示“CS1061”错误
- flutter - 如何向免费用户显示不同的页面,向付费用户显示不同的页面
- r - 使用 Rselenium 进行网页抓取并保存为数据框时创建“for”循环
- alexa - Alexa 按时讲话的技巧是什么?
- android - 应用打开时单击后 Azure 推送通知未关闭
- php - Google oauth 致命错误:count() 使用 php 8.0.9 版本
- python - 我的代码正在独立运行,但不会在我的整个项目中运行/打印