标准化熊猫数据框

时间:2020-08-07 16:26:50

标签: 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

我想根据TRPMILES的最大值来归一化HHSTATE

        HOUSEID  PERSONID  HHSTATE  TRPMILES
    0   20000017    1         IN    1
    1   20000017    1         IN    0.009999
    2   20000017    1         IN    1
    3   20000017    2         IN    1
    4   20000017    2         IN    0.009999
    5   20000017    2         IN    0.009999
    6   20000231    1         TX    0.500000
    7   20000231    1         TX    0.333333
    8   20000231    1         TX    1
    9   20000231    1         TX    0.833333

这是我尝试过的:

df=df.div(df['TRPMILES'].max(level=[2]),level=2).reset_index()

我有一百万行,其中HHSTATE具有50个不同的值。 你能给个提示吗?

1 个答案:

答案 0 :(得分:1)

我认为以下对您有用:

df["max_trpmiles"] = df.groupby("HHSTATE")["TRPMILES"].transform("max")
df["TRPMILES"] /= df["max_trpmiles"]
df = df.drop("max_trpmiles", axis=1)