我正在尝试使用map_partitions将大量函数应用于快速数据帧。该函数在本地定义时起作用,例如:
#assume a data frame df1
def upper(x):
return x.str.upper()
def process(df,info):
for mapper,col in info['process']:
df[col] = df[col].map_partitions(mapper, meta=df[col])
return df
info = {'process':[(upper, 'column_name')]}
df = process(df1, info)
df.head()
但是当我们将代码拆分为模块时,它不起作用。
helper.py
def upper(x):
return x.str.upper()
def upper_lambda():
return lambda x: x.str.upper()
main.py
import helper
#assume a data frame df1
def process(df,info):
for mapper,col in info['process']:
df[col] = df[col].map_partitions(mapper, meta=df[col])
return df
info = {'process':[(getattr(helper,'upper'), 'column_name')]}
#Tried with the lambda too.. dosent seem to work
#info = {'process':[(helper.upper(), 'column_name')]}
df = process(df1, info)
df.head()
它只是抛出KilledWorker :(“('('assign-read-parquet-head-1-5-assign-77bd7b855e5e8eec82312c65361fc7c5',0)”,
答案 0 :(得分:1)
Dask当然支持使用其他模块中的功能。但是,这些模块应该在您使用的所有计算机上都存在。
对于像<header class="header">
<div class="container">
<nav class="nav">
<div class="hamburger-menu">
<i class="fas fa-bars"></i>
<i class="fas fa-times"></i>
</div>
<ul class="nav-list">
<li class="nav-item">
<a href="index.html" class="nav-link">Home</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">About</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Offers</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">News</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Contact</a>
</li>
</ul>
</nav>
</div>
</header>
文件这样的小文件,您可能需要研究helper.py
来帮助您进行移动。