【问题标题】:Making an apply function faster in Python在 Python 中使应用函数更快
【发布时间】:2020-09-24 21:28:29
【问题描述】:

我在大约 600 万行上运行以下代码。它是如此缓慢,而且永远不会结束。

df['City'] = df['POSTAL_CODE'].apply(lambda x: nomi.query_postal_code(x).county_name)

它为每个邮政编码分配一个对应的城市。当我在一段日期集(例如 1000 行)上运行它时,它运行良好。但是在整个数据上运行代码从来没有给我任何输出。

任何人都可以修改代码以使其更快吗?

谢谢!

【问题讨论】:

标签: python function loops apply cpu-speed


【解决方案1】:
!pip3 install multiprocess

from multiprocess import Pool

def parallelize_dataframe(data, func, n_cores=4):
       data_split = np.array_split(data, n_cores)
       pool = Pool(n_cores)
       data = pd.concat(pool.map(func, data_split))
       pool.close()
       pool.join()
       return data


df['City'] = parallelize_dataframe(df['POSTAL_CODE'], lambda x: nomi.query_postal_code(x).county_name, 4)

【讨论】:

  • 您能否添加更多信息。在我的例子中,数据是 df,函数是 nomi.query_postal_code(x) 。我不知道如何将我的 df 信息插入到您提出的解决方案中。感谢您提供一些帮助。
  • @Benn 添加。这应该有效。还有其他方法可以做到这一点,但这很容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2021-02-08
  • 2022-01-03
  • 2020-07-20
  • 2022-11-21
  • 2014-09-14
相关资源
最近更新 更多