计算 Pandas DataFrame 中父级总数的份额

M_I*_*845 3 python dataframe pandas pandas-groupby

我想知道与下面的方法相比是否有更好的方法来计算 Pandas 中父级总数的份额:非常感谢您的帮助!

raw_data = {'product': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
        'revenue': [10,20,20,0,50,50,0,0,30]}
df = pd.DataFrame(raw_data, columns = ['product', 'revenue'])

unique_values = df['product'].unique()
L = pd.DataFrame ()

for value in unique_values:
    small_df = df[df['product']==value]
    small_df['shares'] = small_df['revenue']/small_df['revenue'].sum()
    L = L.append(small_df, ignore_index=True)

print(L)
Run Code Online (Sandbox Code Playgroud)

May*_*wal 5

尝试这个:

df['shares'] = df.groupby('product')['revenue'].apply(lambda x: x/ x.sum())

In [898]: df
Out[898]: 
  product  revenue  shares
0       A       10     0.2
1       A       20     0.4
2       A       20     0.4
3       B        0     0.0
4       B       50     0.5
5       B       50     0.5
6       C        0     0.0
7       C        0     0.0
8       C       30     1.0
Run Code Online (Sandbox Code Playgroud)