我有一个数据框
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
规范化上表?
答案 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