Pandas 计算组内的值

Pandas 计算组内的值,pandas,group-by,pivot,geopandas,Pandas,Group By,Pivot,Geopandas,假设我有一个数据帧名称为df: Origin Dest T R 0 N N 100 3 1 N A 2 6 2 A B 356 7 3 A B 789 8 4 B N 999 9 5 B A 345 2 6 N A 456 3 我希望生成一个数据帧,以便按原点为每个组执行以下计算: 然后将“T”列中的和值除以每组“R”列中的和值。我希望看到

假设我有一个数据帧名称为df:

    Origin Dest T   R
0      N    N  100  3
1      N    A    2  6
2      A    B  356  7
3      A    B  789  8
4      B    N  999  9
5      B    A  345  2
6      N    A  456  3
我希望生成一个数据帧,以便按原点为每个组执行以下计算:

然后将“T”列中的和值除以每组“R”列中的和值。我希望看到原始矩阵形式的结果

我试图跟随,但不起作用

Matrix_Origin =df.pivot_table(values=['T','R'], index='Origin', columns ='Dest', fill_value=0, aggfunc=[lambda x: df['T'].sum()/df['R'].sum() ])
这就是我想要制作的:

Origin   N     A     B
N     33.33  50.88   0
A      0     0    76.33
B      111  172.5   0

任何帮助都将不胜感激。

groupby与的组合可以产生您想要的结果:

res = df.groupby(["Origin", "Dest"]).sum().unstack()


#divide column T with column R
outcome = (
    res["T"]
    .div(res["R"])
    .reindex(index=["N", "A", "B"], columns=["N", "A", "B"])
    .fillna(0)
     #optional
    .round(2)
)

outcome





  Dest      N     A      B
Origin          
   N    33.33   50.89   0.00
   A    0.00    0.00    76.33
   B    111.00  172.50  0.00

@sammywemmy非常感谢你!