Pythonのpandasでfor文を使わない書き方
以下のようなDataFrameがあります。
import pandas as pd
from pandas import DataFrame
df = DataFrame([
["aaa", 1], ["aaa", 2], ["aaa", 3], ["aaa", "finish"],
["bbb", 1], ["bbb", 2], ["bbb", "finish"],
["ccc", 1], ["ccc", 2], ["ccc", 3], ["ccc", 4], ["ccc", "finish"],
], columns=["name", "number"])
numberがfinishになっているところを、nameが同じnumberの最大値+1に修正したいです。
for文を使うと以下のように書けたのですが、for文を使わずに書くことはできますか?
for index, row in df[df["number"] == "finish"].iterrows():
df.at[index, "number"] = df[(df["number"] != "finish") & (df["name"] == row["name"])]["number"].max() + 1
実際は大量にデータがあります。for文は遅いと聞いたので、効率よく処理したいです。
1