Dataframe 熊猫从数据帧获取共享
我需要一种智能而简洁的方式从data_1到达data_3数据帧。 现在我很容易就到达了数据帧2Dataframe 熊猫从数据帧获取共享,dataframe,grouping,pandas,Dataframe,Grouping,Pandas,我需要一种智能而简洁的方式从data_1到达data_3数据帧。 现在我很容易就到达了数据帧2 DATA_1 key SEGM1 SEGM2 VAL A K X 1 B K X 2 C K X 3 D K Y 4 E K Y
DATA_1
key SEGM1 SEGM2 VAL
A K X 1
B K X 2
C K X 3
D K Y 4
E K Y 5
F J Y 6
G J Z 7
H J Z 8
I J Z 9
DATA_2
SEGM1 SEGM2 VAL
K X 6
Y 9
J Y 6
Z 24
DATA_3
SEGM1 SEGM2 VAL
K X 40%
Y 60%
J Y 20%
Z 80%
非常感谢
这是一条单行线:
In [1]: df
Out[1]:
SEGM1 SEGM2 VAL
key
A K X 1
B K X 2
C K X 3
D K Y 4
E K Y 5
F J Y 6
G J Z 7
H J Z 8
I J Z 9
使用DataFrame.div
函数划分两个数据帧。第一个数据帧按要计算其共享的“内部级别”分组,然后求和。第二个数据帧按“外部级别”分组,作为共享计算的分母。必须将level=0
传递给div
函数,该函数引用多索引级别SEGM1
In [2]: df.groupby(['SEGM1','SEGM2'])[['VAL']].sum().div(df.groupby('SEGM1').sum(),level=0)
Out[2]:
VAL
SEGM1 SEGM2
J Y 0.2
Z 0.8
K X 0.4
Y 0.6
分子数据帧:
In [1]: df.groupby(['SEGM1','SEGM2'])[['VAL']].sum()
Out[1]:
VAL
SEGM1 SEGM2
J Y 6
Z 24
K X 6
Y 9
In [2]: df.groupby('SEGM1').sum()
Out[2]:
VAL
SEGM1
J 30
K 15
分母数据帧:
In [1]: df.groupby(['SEGM1','SEGM2'])[['VAL']].sum()
Out[1]:
VAL
SEGM1 SEGM2
J Y 6
Z 24
K X 6
Y 9
In [2]: df.groupby('SEGM1').sum()
Out[2]:
VAL
SEGM1
J 30
K 15
这是一条单行线:
In [1]: df
Out[1]:
SEGM1 SEGM2 VAL
key
A K X 1
B K X 2
C K X 3
D K Y 4
E K Y 5
F J Y 6
G J Z 7
H J Z 8
I J Z 9
使用DataFrame.div
函数划分两个数据帧。第一个数据帧按要计算其共享的“内部级别”分组,然后求和。第二个数据帧按“外部级别”分组,作为共享计算的分母。必须将level=0
传递给div
函数,该函数引用多索引级别SEGM1
In [2]: df.groupby(['SEGM1','SEGM2'])[['VAL']].sum().div(df.groupby('SEGM1').sum(),level=0)
Out[2]:
VAL
SEGM1 SEGM2
J Y 0.2
Z 0.8
K X 0.4
Y 0.6
分子数据帧:
In [1]: df.groupby(['SEGM1','SEGM2'])[['VAL']].sum()
Out[1]:
VAL
SEGM1 SEGM2
J Y 6
Z 24
K X 6
Y 9
In [2]: df.groupby('SEGM1').sum()
Out[2]:
VAL
SEGM1
J 30
K 15
分母数据帧:
In [1]: df.groupby(['SEGM1','SEGM2'])[['VAL']].sum()
Out[1]:
VAL
SEGM1 SEGM2
J Y 6
Z 24
K X 6
Y 9
In [2]: df.groupby('SEGM1').sum()
Out[2]:
VAL
SEGM1
J 30
K 15