簡體   English   中英

我怎樣才能加快這個 dataframe?

[英]How can I speed up this dataframe?

我有兩個數據幀ssk大約有1M元素,我需要從中生成一個新的 dataframe df

df.iloc[i] = s.iloc[f(i)] / sk.iloc[g(i)] 

其中fg是返回整數的函數。

目前我正在做:

data = []
for i in range(s.shape[0])):
    data.append(s.iloc[f(i)] / sk.iloc[g(i)])

df = pd.DataFrame(data, columns=s.columns)

但這似乎很慢。 大約需要 5 分鍾(數據框有 9 個float列)。

只有10M個分區,所以 5 分鍾似乎低於標准。 似乎所有的時間都花在迭代ssk上,所以我想知道是否有辦法快速構建s[f]sk[g]

作為第一件事 - 限制在單次迭代中處理的零件數量 - 所以盡可能多地矢量化:

f_i = [f(i) for i in range(len(s))]
g_i = [g(i) for i in range (len(s))]

df = s.iloc[f_i] / sk.iloc[g_i]

第二件事 - 盡可能多地嘗試矢量化f_ig_i的生成。

您尚未分享這些函數的示例,但其想法是基本上使其適用於numpy ,避免迭代處理。

import numpy as np

f_i = f(np.arange(len(s)))
g_i = g(np.arange(len(s)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM