我正在使用pandas模块。我的数据框有5个字段。
最初的3个字段是帐号,月份和工资。我想找到月工资的百分比,假设总工资是100%。 为了做到这一点,我想在DataFrame上使用group by。将按帐户分组并计算所有月份收到的工资总额。我有DataFrameGroupBy对象的原始DataFrame,但无法理解如何将工资与从组中收到的金额除以。
请建议我如何在一个帐户的所有行上应用金额。
答案 0 :(得分:1)
您可以使用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