python - 将函数应用于数据帧以创建列表的矢量化方式

标签 python pandas

我很少见过这样的问题

Vectorized alternative to iterrows , Faster alternative to iterrows , Pandas: Alternative to iterrow loops , for loop using iterrows in pandas , python: using .iterrows() to create columns , Iterrows performance 。但似乎每个人都是独特的案例而不是普遍的方法。

我的问题又是关于.iterrows

我正在尝试将第一行和第二行传递给函数并从中创建一个列表。

我拥有的:

我有一个 pandas DataFrame,其中有两列,如下所示。

         I.D         Score
1         11          26
3         12          26
5         13          26
6         14          25

我做了什么:

其中术语Point是我之前定义的函数。

my_points = [Points(int(row[0]),row[1]) for index, row in score.iterrows()]

我想做的事情:

上述的更快的矢量化形式。

最佳答案

尝试列表理解:

score = pd.concat([score] * 1000, ignore_index=True)

def Points(a,b):
    return (a,b)

In [147]: %timeit [Points(int(a),b) for a, b in zip(score['I.D'],score['Score'])]
1.3 ms ± 132 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [148]: %timeit [Points(int(row[0]),row[1]) for index, row in score.iterrows()]
259 ms ± 5.42 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [149]: %timeit [Points(int(row[0]),row[1]) for row in score.itertuples()]
3.64 ms ± 80.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

关于python - 将函数应用于数据帧以创建列表的矢量化方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53535564/

相关文章:

python - 如何旋转 Sprite 并向鼠标位置发射子弹?

python - 并行化 pandas 函数 pd.concat

python - 数据框的标准差?

python - 如何在 Pandas 中对数据透视表进行排序

python - Shopify Python API : How to serialize products list to JSON?

python - 如何使用 post 请求填写表单并获得响应

python - 将数组从 c 传输到 python

python - 查找多列中出现的相同值

python-3.x - 混淆矩阵 - 不随预测模型而改变 (Sklearn)

python - 如何摆脱数组中的内置引用并将其保存到文件中