我正在开发一个非常广泛的数据集的分析,该数据集具有属性(g,month,p),这些属性使用熊猫的groupby按组进行组织。
G month p
G1 1 0.040698496
G1 2 0.225640771
G1 3 0.236948047
G1 4 0.119339576
G1 5 0.779272432
G2 1 0.892168636
G2 2 0.062467967
G2 3 0.936044226
G3 1 0.509212613
G3 2 0.476718744
G3 3 0.407299543
G3 4 0.843260893
G4 1 0.882554249
然后我将G组的统计信息从1提取到n,如下所示
g1 g2 g3 gn
mean 0.280379864 0.630226943 0.559122948 …
std 0.290326376 0.49218285 0.194135874 …
count 5 3 4 …
需要创建一个新字段,该字段是变量p的组平均值的乘积,由于扩展(超过200个组),有一些方法可以使其自动... ...单独进行花很多时间。 预期的输出是
G month p STD*p
G1 1 0.040698496 0.011815847
G1 2 0.225640771 0.065509467
G1 3 0.236948047 0.068792268
G1 4 0.119339576 0.034647427
G1 5 0.779272432 0.226243341
G2 1 0.892168636 0.439110102
G2 2 0.062467967 0.030745662
G2 3 0.936044226 0.460704915
G3 1 0.509212613 0.098856436
G3 2 0.476718744 0.09254821
G3 3 0.407299543 0.079071453
G3 4 0.843260893 0.16370719
答案 0 :(得分:1)
将GroupBy.transform
与std
一起用于重复聚合值,因此p
列的倍数可能是重复的:
df['STD*p'] = df.groupby('G')['p'].transform('std').mul(df['p'])
print (df)
G month p STD*p
0 G1 1 0.040698 0.011816
1 G1 2 0.225641 0.065509
2 G1 3 0.236948 0.068792
3 G1 4 0.119340 0.034647
4 G1 5 0.779272 0.226243
5 G2 1 0.892169 0.439110
6 G2 2 0.062468 0.030746
7 G2 3 0.936044 0.460705
8 G3 1 0.509213 0.098856
9 G3 2 0.476719 0.092548
10 G3 3 0.407300 0.079071
11 G3 4 0.843261 0.163707
12 G4 1 0.882554 NaN