我很少见过这样的问题
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/