计算母公司总计在数据框架中的份额

2024-09-28 22:19:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道有没有比下面的方法更好的方法来计算大熊猫的亲本总数:非常感谢你的帮助!你知道吗

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)

Tags: 方法dataframedfdatarawvalueproductsmall
3条回答

试试这个:

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
(df.set_index("product") / df.groupby('product').sum()).reset_index()

  product  revenue
0       A      0.2
1       A      0.4
2       A      0.4
3       B      0.0
4       B      0.5
5       B      0.5
6       C      0.0
7       C      0.0
8       C      1.0

你可以用revenue除以GroupBy+transformsum

df['shares'] = df['revenue'] / df.groupby('product')['revenue'].transform('sum')

print(df)

  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

相关问题 更多 >