我没有看到像这样的几个问题
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/