私はこれらのようないくつかの質問を見ました
iterrowsに代わるベクトル化、iterrowsに高速の代替、iterrowの代替ループ:パンダ、パンダにiterrowsを使用してforループ、パイソンを:列を作成する.iterrows()を使用して、Iterrows性能を。しかし、誰もが一般化されたアプローチではなく、ユニークなケースのようです。
私の質問もまたについて.iterrows
です。
1行目と2行目を関数に渡して、そこからリストを作成しようとしています。
私が持っているもの:
このような2つの列を持つパンダ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)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加