Pandas:加速遍历两个数据帧

Posted

技术标签:

【中文标题】Pandas:加速遍历两个数据帧【英文标题】:Pandas: speed up iterating throught two dataframes 【发布时间】:2019-08-23 18:20:55 【问题描述】:

我有一个 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 记录),并且 min 和 max 之间的范围通常非常大(数千),因此整个过程需要很长时间。有没有办法更快地实现上述字典创建?

【问题讨论】:

范围 [minvalue, maxvalue] 都是唯一的? 是的,确实它们都是独一无二的 您创建的 dict 的目的是什么,您将如何使用它?我之所以这么问,是因为我认为优化您已有的代码并创建相同的字典可能非常困难,但如果您最终根本不需要字典,可能会找到一种方法。 【参考方案1】:

试试这个:

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())

【讨论】:

以上是关于Pandas:加速遍历两个数据帧的主要内容,如果未能解决你的问题,请参考以下文章

在数据帧上的 pandas groupby 之后循环遍历组

遍历 url 端点并将 json 转换为 pandas 数据帧

Pandas循环遍历数据帧并使用while循环列表

如何避免循环遍历 pandas 中的分类变量以查看/操作数据帧切片/子集

python 将csv文件转换为Pandas数据帧并遍历其行的函数

通过在两个 Pandas 数据帧之间迭代来识别相似的值。