我没有看到像这样的几个问题

Vectorized alternative to iterrows
Faster alternative to iterrowsPandas: Alternative to iterrow loops
for loop using iterrows in pandaspython: using .iterrows() to create columnsIterrows 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/

10-12 23:25