首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Modin df迭代速度慢得令人痛苦。有其他办法可以加快速度吗?

Modin df迭代速度慢得令人痛苦。有其他办法可以加快速度吗?
EN

Stack Overflow用户
提问于 2021-04-23 05:43:01
回答 1查看 383关注 0票数 0

我有一个modin数据帧,它有120 K行。我想把它的几个栏目合并起来。Modin迭代花费了大量时间,所以我尝试使用numpy.where。Numpy.where是在相当于熊猫df在5-10分钟内完成,但同样的事情在摩丁df需要30分钟。对于modin dataframe来说,有其他方法来加速这个任务吗?

cols_to_be_coalesced ->此列表包含要合并的列列表。它包含10-15列.

代码:

代码语言:javascript
运行
复制
for COL in [cols_to_be_coalesced]:
    df['COL'] = np.where(df['COL']!='', df['COL'], df['COL_X'])   

如果df是熊猫的dataframe,它在10分钟内执行,但如果是modin dataframe,则需要30分钟。那么,对于是否有任何等效的numpy.where代码来加速此操作?

EN

回答 1

Stack Overflow用户

发布于 2021-12-09 01:54:44

我认为您的np.where速度很慢,因为np.where将Modin转换为numpy数组,并且将Modin转换为numpy是慢的。这个版本使用pandas.Series.where (不是Modin where实现,因为还没有添加)对您来说更快吗?

代码语言:javascript
运行
复制
for COL in [cols_to_be_coalesced]:
    df['COL'] = df['COL'].where(df['COL'] != '', df['COL_X']) 

在本例中,我发现该方法需要1.58秒,而原始方法则为70秒:

代码语言:javascript
运行
复制
import modin.pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 100, size=(2**20, 2**8))).add_prefix("col")
# setting column with np.where takes 70 seconds
df['col1'] = np.where(df['col1'] % 2 == 0, df['col1'], df['col2'])
# setting column with pandas.Series.where takes 1.58 seconds
df['col1'] = df['col1'].where(df['col1'] % 2 == 0, df['col2'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67224560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档