我有一个熊猫数据框,看起来像这样:
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()
我想问一下如何计算“已售”栏总和的百分比。
答案 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)
简单解决方案
你快到了。
# 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);