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
В фрейме данных, приведенном выше, я хотел бы вычислить для каждой строки процентное отношение общего числа, занятого этим val_code, в результате чего получается значение foll. кадр данных.Вычислить процент для каждой строки в pandas dataframe
I.e. Сложите каждую строку и разделить на сумму всех строк
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()))
как использовать ту же технику для x/x.sum (axis = 1) (то есть процент от общего количества строк). Благодарю. Мне нужно это для какой-то другой задачи. – ihightower
@ihightower Звучит как новый вопрос ... – Alexander
wow, который был быстрым. на самом деле я просто решил проблему из других сообщений .. df.apply (lambda x: x/x.sum(), axis = 1) (просто нужно добавить ось = 1 для применения). в любом случае, спасибо вам большое. Ваш ответ на этот вопрос был причиной того, что я хотел. ранее я пытался использовать параметр оси = 1 в неправильном положении. – ihightower