Pandas 计算组内的值
假设我有一个数据帧名称为df: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”列中的和值。我希望看到
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非常感谢你!