1 回答
TA贡献1942条经验 获得超3个赞
这是一种可以使其工作的方法(使用您的示例数据):
import pandas as pd
import numpy as np
import concurrent.futures as cf
from multiprocessing import cpu_count
np.random.seed(4)
layer = pd.DataFrame(np.random.randint(0,25,size=(10, 3)),
columns=list(['basalareap', 'basalareas', 'basalaread']))
def denom(layer):
layer['denominator'] = layer[["basalareap","basalareas","basalaread"]].sum(axis=1)
return layer
if __name__ == '__main__':
data_split = np.array_split(layer,cpu_count())
# create a function to for process tasks
def cpu_tasks(func, *args):
with cf.ProcessPoolExecutor() as tp:
result = tp.map(func, chunksize=10, *args)
return list(result)
# get result
newdf = cpu_tasks(denom, data_split)
# convert list to dataframe
newdf = pd.concat(newdf)
print(newdf)
basalareap basalareas basalaread denominator
0 14 23 5 42
1 1 8 23 32
2 8 18 9 35
3 7 13 23 43
4 23 8 4 35
5 18 12 6 36
6 10 20 3 33
7 0 23 21 44
8 21 9 6 36
9 6 24 2 32
添加回答
举报
