# 各`id`ごとのコスト合計を計算
cost_sum_per_id = df.groupby('id')['cost'].transform('sum')

# 新しい列`rate`に比率を計算して格納
df['rate'] = df['cost'] / cost_sum_per_id * 100

# 結果を表示
print(df)

 

import pandas as pd

# サンプルデータフレームを作成
data = {
    'id': ['s1', 's2', 's2', 's2'],
    'item': ['z1', 'z2', 'z3', 'z4'],
    'hour': [40, 20, 80, 60],
    'cost': [800000, 800000, 800000, 800000]
}
df = pd.DataFrame(data)

# 各`id`ごとのコスト合計を計算
cost_sum_per_id = df.groupby('id')['cost'].transform('sum')

# 新しい列`rate`に比率を計算して格納
df['rate'] = df['cost'] / cost_sum_per_id * 100

# 結果を表示
df