country_name country_code val_code \
United States of America 231 1
United States of America 231 2
United States of America 231 3
United States of America 231 4
United States of America 231 5
y191 y192 y193 y194 y195 \
47052179 43361966 42736682 43196916 41751928
1187385 1201557 1172941 1176366 1192173
28211467 27668273 29742374 27543836 28104317
179000 193000 233338 276639 249688
12613922 12864425 13240395 14106139 15642337
在上面的数据框中,我想为每一行计算该valu代码所占的总数的百分比,结果如下。数据帧。
即,将每一行相加,除以所有行的总和
country_name country_code val_code \
United States of America 231 1
United States of America 231 2
United States of America 231 3
United States of America 231 4
United States of America 231 5
perc
50.14947129
1.363631254
32.48344744
0.260213146
15.74323688
现在,我在做这个,但它不起作用
grp_df = df.groupby(['country_name', 'val_code']).agg()
pct_df = grp_df.groupby(level=0).apply(lambda x: 100*x/float(x.sum()))
对所有感兴趣的列的总计进行Ge运算,然后添加百分比列:
因此
np.sum
将对所有值求和:然后,我们调用感兴趣列上的
.sum(axis=1)/total * 100
按行求和,除以总和,再乘以100得到一个百分比。使用
lambda
函数可以获得每个列的百分比,如下所示:您的示例没有任何重复的
val_code
值,因此我不确定您希望如何显示数据(即,显示每个vval_code
组的列中的合计百分比与合计百分比)相关问题 更多 >
编程相关推荐