繁体   English   中英

将使用大熊猫分组依据计算的总和应用于分组的所有元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM