如何计算列的总和的百分比?

时间:2019-12-17 23:37:31

标签: python pandas pandas-groupby

我有一个熊猫数据框,看起来像这样:

Country  Sold
 Japan   3432
 Japan   4364
 Korea   2231
 India   1130
 India   2342
  USA    4333
  USA    2356
  USA    3423

我使用下面的代码并获得“已售”列的总和

df1= df.groupby(df['Country'])
df2 = df1.sum()

我想问一下如何计算“已售”栏总和的百分比。

4 个答案:

答案 0 :(得分:1)

您可以通过添加以下代码来获取百分比

df2["percentage"] = df2['Sold']*100 / df2['Sold'].sum()

在输出数据框中,添加了一个列有每个国家/地区百分比的列。

答案 1 :(得分:0)

我们可以使用transform

将原始Sold列除以新列,该列由分组的和组成,但长度与原始DataFrame相同
df.assign(
    pct_per=df['Sold'] / df.groupby('Country').transform(pd.DataFrame.sum)['Sold']
    )

  Country  Sold   pct_per
0   Japan  3432  0.440226
1   Japan  4364  0.559774
2   Korea  2231  1.000000
3   India  1130  0.325461
4   India  2342  0.674539
5     USA  4333  0.428501
6     USA  2356  0.232991
7     USA  3423  0.338509

答案 2 :(得分:0)

简单解决方案

你快到了。

  1. 首先,您需要按国家/地区分组
  2. 然后创建新的百分比列(通过将分组销售额除以所有销售额之和)
# reset_index() is only there because the groupby makes the grouped column the index
df_grouped_countries = df.groupby(df.Country).sum().reset_index()
df_grouped_countries['pct_sold'] = df_grouped_countries.Sold / df.Sold.sum()

答案 3 :(得分:0)

您要查找聚合前后的百分比吗?

std::copy(buf.c_index(96), buf.c_index(96 + 32), my_uint32_t);