基于其他列汇总和标准化熊猫数据框

时间:2020-08-01 20:20:23

标签: python-3.x pandas

给出此数据框:

    HOUSEID   PERSONID  HHSTATE  TRPMILES
0   20000017    1         IN    22.000000
1   20000017    1         IN    0.222222
2   20000017    1         IN    22.000000
3   20000017    2         IN    22.000000
4   20000017    2         IN    0.222222
5   20000017    2         IN    0.222222
6   20000231    1         TX    3.000000
7   20000231    1         TX    2.000000
8   20000231    1         TX    6.000000
9   20000231    1         TX    5.000000

我想基于TRPMILESHOUSEID的唯一组合对PERSONID中的值求和:

     HOUSEID   PERSONID  HHSTATE  TRPMILES
0   20000017    1         IN    66.666666
1   20000017    2         IN    22.444444
2   20000231    1         TX    16.000000

然后基于TRPMILESHHSTATE进行归一化。我的意思是将HHSTATE类别中的每个数字除以HHSTATE列中的最大旅行里程数。

IN的最大值为66.666666,因此,将其自身除以1.0000000,除以第二行则为0.3366666)

  HOUSEID   PERSONID  HHSTATE  TRPMILES
0   20000017    1         IN    1.0000000
1   20000017    2         IN    0.3366666
2   20000231    1         TX    1.0000000

我有一个大数据框,其中包含许多可能的值HHSTATE

谢谢

1 个答案:

答案 0 :(得分:2)

尝试使用groupby,然后执行div

s=df.groupby(['HOUSEID',  'PERSONID', 'HHSTATE'])['TRPMILES'].sum()
s=s.div(s.max(level=[2]),level=2).reset_index()