我正在尝试从谷歌存储桶下载文件并解析它们。有数以百万计的此类文件需要下载,解析并对其执行一些操作(自然语言处理等(。
我正在使用 dask 的并行处理尝试下面的代码,它正在工作,但它对 panda 数据帧中的每一行调用extract_skill
两次而不是一次。请帮助我理解为什么extract_skill
方法被调用两次。
import pandas as pd
import numpy as np
import dask
import dask.dataframe as dd
# downloading file and extract skill sets and store in skill_sets column
chunk_size = 20
df_list = np.array_split(temp_df, temp_df.shape[0]/chunk_size)
temp_df["skill_sets"] = ""
result_df = pd.DataFrame(data={}, columns=temp_df.columns)
for df_ in df_list:
df_["skill_sets"] = dd.from_pandas(df_, npartitions=4, sort=False, name='x').apply(extract_skill, axis=1, meta='object').compute()
result_df = pd.concat([result_df, df_], axis=0)
extract_skill((
def extract_skill(row):
// download file, parse and do some nlp stuff
file_name = row['file_path']
......
......
return skill_sets
提前谢谢。
DataFrame.apply
方法对少量数据样本运行函数,以确定输出的数据类型和列。 请参阅此函数的文档字符串并查找关键字"meta"以获取更多信息。