[英]apply sum calculated using pandas group by to all elements of group
我正在使用pandas模块。 我的数据框有5个字段。
最初的3个字段是帐号,月份和薪水。假设总薪水为100%,我想按月查找薪水的百分比。 为了做到这一点,我想在DataFrame上使用group by。 将按帐户分组并计算所有月份的工资总额。 我有DataFrameGroupBy对象原始的DataFrame,但无法理解如何将薪水与从group by收到的总和相除。
请提出如何将总和应用于一个帐户的所有行。
您可以使用groupby/transform
为每个组的每一行计算一个值:
df['percent salary'] = df.groupby(['account'])['salary'].transform(
lambda x: x/x.sum())
例如,
import numpy as np
import pandas as pd
np.random.seed(2015)
df = pd.DataFrame(np.random.randint(10, size=(10, 2)),
columns=['account', 'salary'])
df['percent salary'] = df.groupby(['account'])['salary'].transform(lambda x: x/x.sum())
print(df)
产量
account salary percent salary
0 2 2 0.4
1 9 6 1.0
2 8 5 1.0
3 7 8 0.5
4 0 6 1.0
5 7 8 0.5
6 3 8 1.0
7 6 9 1.0
8 2 3 0.6
9 1 2 1.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.