计算组内的值

Calculate a value inside a group

假设我有一个 Pandas DataFrame 名称是 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

我想生成一个 DataFrame,按 Origin 为每个组执行以下计算:

将 'T' 列中的值相加,然后除以每个组的 'R' 中的值之和。我想以 origin_dest 矩阵形式查看此结果。

我正在尝试关注,但没有成功。

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 与 unstack 的组合可以产生您想要的结果:

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