使用pandas规范化多索引表上的数据

时间:2017-11-26 11:57:41

标签: python pandas dataframe normalize

我有一个数据框

     O   D  counts
0   G1  G1    8576
1   G1  G2    4213
2   G1  G3    8762
3   G2  G1    8476
4   G2  G2    2134
...

但是每个小组在O和D中都有不同的人口。例如:

例如,O中的G1有1234个不同的成员,而D中的G1有4321个。

如何使用pandas规范化上表?

1 个答案:

答案 0 :(得分:1)

您似乎需要首先重塑,然后再normalize

df = df.set_index(['O','D'])['counts'].unstack(fill_value=0)
print (df)
D     G1    G2    G3
O                   
G1  8576  4213  8762
G2  8476  2134     0

df1 = (df - df.mean()) / (df.max() - df.min())
print (df1)
D    G1   G2   G3
O                
G1  0.5  0.5  0.5
G2 -0.5 -0.5 -0.5

最后重塑:

print (df1.stack().reset_index(name='count'))

    O   D  count
0  G1  G1    0.5
1  G1  G2    0.5
2  G1  G3    0.5
3  G2  G1   -0.5
4  G2  G2   -0.5
5  G2  G3   -0.5