熊猫:加快迭代两个数据帧的速度

时间:2019-04-02 12:13:11

标签: pandas performance loops dictionary for-loop

我有一个DataFrame B,它的列为:id_number, performance, min_value, max_value

B
id_number | perfomance | min_value | max_value
12        | A          | 400       | 700
4         | B          | 1000      |1250
89        | C          |1          | 30

我想通过以下方式创建字典:

for idx, r in B.iterrows():
  for i in range(r['min_value'], r['max_value'] + 1):
      dic[i] = r[id_number]

(请注意,id_number不是唯一的。)

我的数据框B非常大(> 5M条记录),并且最小值和最大值之间的范围通常很大(数千),因此整个过程需要很长时间。有没有办法更快地实现上述字典创建?

1 个答案:

答案 0 :(得分:0)

尝试一下:

dic = (df.apply(lambda x: pd.Series(x['id_number'], 
                                    index = np.arange(x['min_value'], x['max_value']+1)),
                axis=1)
         .stack()
         .reset_index(level=0, drop=True)
         .to_dict())