質問: 'スーパー')]['値段'].mean() else: continue ``` そこで**「処理をより高速に終わらせる方法」**を模索しています。 どうかご回答よろしくお願いします。
回答: コンビニの価格にもスーパーの平均値を採用するということですかね。 であれば、`groupby().transform(lambda d:d.mean())` を使うのではなく `groupby().mean()` にて、**スーパーのみ** の価格表を作製し、元のデータフレームにその価格を適用するとよいのではないでしょうか。 ``` import pandas as pd df = pd.DataFrame([['王林', '青森', 'スーパー', 160], ['王林', '青森', 'スーパー', 180], ['王林', '青森', 'コンビニ', 210], ['王林', '青森', 'コンビニ', 230], ['王林', '長野', 'スーパー', 110], ['王林', '長野', 'スーパー', 170], ['王林', '長野', 'コンビニ', 250], ['王林', '長野', 'コンビニ', 240], ['紅玉', '青森', 'スーパー', 170], ['紅玉', '青森', 'スーパー', 150], ['紅玉', '青森', 'コンビニ', 220], ['紅玉', '青森', 'コンビニ', 250], ['紅玉', '長野', 'スーパー', 170], ['紅玉', '長野', 'スーパー', 160], ['紅玉', '長野', 'コンビニ', 280], ['紅玉', '長野', 'コンビニ', 180]], columns=['種類', '都道府県', '場所', '値段']) # スーパー価格の平均から値段表を作製 price_list = df.loc[df['場所']=='スーパー'].groupby(['種類', '都道府県']).mean() # 上記の値段表をデータフレームに適用 ret = df.drop('値段',axis=1).merge(price_list, left_on=['種類', '都道府県'], right_index=True) print(ret) # 種類 都道府県 場所 値段 #0 王林 青森 スーパー 170.0 #1 王林 青森 スーパー 170.0 #2 王林 青森 コンビニ 170.0 #3 王林 青森 コンビニ 170.0 #4 王林 長野 スーパー 140.0 #5 王林 長野 スーパー 140.0 #6 王林 長野 コンビニ 140.0 #7 王林 長野 コンビニ 140.0 #8 紅玉 青森 スーパー 160.0 #9 紅玉 青森 スーパー 160.0 #10 紅玉 青森 コンビニ 160.0 #11 紅玉 青森 コンビニ 160.0 #12 紅玉 長野 スーパー 165.0 #13 紅玉 長野 スーパー 165.0 ```