熊猫的分组依据或条件的Z得分估算

时间:2020-02-05 16:37:36

标签: pandas pandas-groupby

我有一个租金参考统计表,如下所示。

Sector      Usage     Mean_Rent       Standard_deviation
SE1         R         100             10
SE1         C         120             5
SE2         R         200             50
SE2         C         150             60

我还有租赁合同表,其中包含租赁合同信息

ID     Sector     Usage     Tenancy_year       Rental
1      SE1        R         2020               120
2      SE1        C         2020               180
3      SE1        R         2020               210
4      SE2        R         2020               170
5      SE2        C         2020               190
6      SE2        R         2020               210

在上表中,我想创建一个新列Z_score。 Z分数是使用参考表以及熊猫中“部门”和“使用情况”列的组合来计算的。

预期产量

    ID     Sector     Usage     Tenancy_year       Rental     Z_score
    1      SE1        R         2020               120        (120-100)/10
    2      SE1        C         2020               180        (180-120)/5
    3      SE1        R         2020               210        (210-100)/10
    4      SE2        R         2020               170        (170-200)/50
    5      SE2        C         2020               190        (190-150)/60
    6      SE2        R         2020               210        (210-200)/50

1 个答案:

答案 0 :(得分:1)

假设两个表分别为df1df2(按给出的顺序),则可以merge进行创建,然后创建z得分:

df = pd.merge(df1, df2, how='right', on=['Sector', 'Usage'])

df['Z_score'] = (df.Rental - df.Mean_Rent) / df.Standard_deviation