通过将一个数据框的列与另一个数据框的行相乘来获取一个数据框
Getting one dataframe by mutiliplying columns of one dataframe with rows of another dataframe
我有两个数据框,形状分别为 m*5 和 5*n。具有 5 列的第一个数据框的列名与具有 5 行的第二个数据框的索引相同。我想将第一个数据帧中每一行的每个元素与第二个数据帧的第一个 2 列相乘,并在第二个数据帧中具有相应的行索引。请在下面找到数据框以供参考:
数据帧 1:
%age_paid_0.0 %age_paid_0.1 %age_paid_0.2 %age_paid_0.3 \
account_angaza_id
AC005839 0.299221 0.377086 0.454950 0.532814
AC005842 0.299221 0.299221 0.521691 0.521691
AC005843 0.299221 0.377086 0.454950 0.532814
AC005851 0.243604 0.310345 0.354839 0.354839
AC005852 0.299221 0.377086 0.454950 0.532814
AC005853 0.299221 0.377086 0.454950 0.532814
AC005856 0.299221 0.377086 0.454950 0.532814
AC005858 0.299221 0.377086 0.454950 0.532814
AC005859 0.332592 0.432703 0.543938 0.650723
AC005860 0.288098 0.365962 0.421580 0.532814
%age_paid_0.4 %age_paid_0.5
account_angaza_id
AC005839 0.610679 0.688543
AC005842 0.521691 0.521691
AC005843 0.610679 0.766407
AC005851 0.510567 0.555061
AC005852 0.610679 0.766407
AC005853 0.610679 0.688543
AC005856 0.610679 0.766407
AC005858 0.543938 0.588432
AC005859 0.650723 0.739711
AC005860 0.532814 0.632925
数据框 2:
0 1
%age_paid_0.0 0.369886 0.673442
%age_paid_0.1 0.409603 0.374386
%age_paid_0.2 0.425269 0.058336
%age_paid_0.3 0.425229 -0.191075
%age_paid_0.4 0.415484 -0.369895
%age_paid_0.5 0.401384 -0.479141
预期数据帧:
0 1
AC005839 1.xxxxxx 2.xxxxxx
AC005840 xxxxxxxx xxxxxxxx
AC005840 xxxxxxxx xxxxxxxx
公式为
dataframe3.loc['AC005839',0] = dataframe1.loc['AC005839',%age_paid_0.1]*dataframe2.loc[%age_paid_0.1,0]+dataframe1.loc['AC005839',%age_paid_0.2]*dataframe2.loc[%age_paid_0.2,0]+...+dataframe1.loc['AC005839',%age_paid_0.5]*dataframe2.loc[%age_paid_0.5,0]
dataframe3.loc['AC005839',1] = dataframe1.loc['AC005839',%age_paid_0.1]*dataframe2.loc[%age_paid_0.1,1]+dataframe1.loc['AC005839',%age_paid_0.2]*dataframe2.loc[%age_paid_0.2,1]+...+dataframe1.loc['AC005839',%age_paid_0.5]*dataframe2.loc[%age_paid_0.5,1]
我们将不胜感激任何形式的帮助。基本上我试图将变量转换为与主要组件相同的平面。提前致谢!
这是点积。由于您的 index/column 标签匹配,您只需要:
df1.dot(df2)
我有两个数据框,形状分别为 m*5 和 5*n。具有 5 列的第一个数据框的列名与具有 5 行的第二个数据框的索引相同。我想将第一个数据帧中每一行的每个元素与第二个数据帧的第一个 2 列相乘,并在第二个数据帧中具有相应的行索引。请在下面找到数据框以供参考:
数据帧 1:
%age_paid_0.0 %age_paid_0.1 %age_paid_0.2 %age_paid_0.3 \
account_angaza_id
AC005839 0.299221 0.377086 0.454950 0.532814
AC005842 0.299221 0.299221 0.521691 0.521691
AC005843 0.299221 0.377086 0.454950 0.532814
AC005851 0.243604 0.310345 0.354839 0.354839
AC005852 0.299221 0.377086 0.454950 0.532814
AC005853 0.299221 0.377086 0.454950 0.532814
AC005856 0.299221 0.377086 0.454950 0.532814
AC005858 0.299221 0.377086 0.454950 0.532814
AC005859 0.332592 0.432703 0.543938 0.650723
AC005860 0.288098 0.365962 0.421580 0.532814
%age_paid_0.4 %age_paid_0.5
account_angaza_id
AC005839 0.610679 0.688543
AC005842 0.521691 0.521691
AC005843 0.610679 0.766407
AC005851 0.510567 0.555061
AC005852 0.610679 0.766407
AC005853 0.610679 0.688543
AC005856 0.610679 0.766407
AC005858 0.543938 0.588432
AC005859 0.650723 0.739711
AC005860 0.532814 0.632925
数据框 2:
0 1
%age_paid_0.0 0.369886 0.673442
%age_paid_0.1 0.409603 0.374386
%age_paid_0.2 0.425269 0.058336
%age_paid_0.3 0.425229 -0.191075
%age_paid_0.4 0.415484 -0.369895
%age_paid_0.5 0.401384 -0.479141
预期数据帧:
0 1
AC005839 1.xxxxxx 2.xxxxxx
AC005840 xxxxxxxx xxxxxxxx
AC005840 xxxxxxxx xxxxxxxx
公式为
dataframe3.loc['AC005839',0] = dataframe1.loc['AC005839',%age_paid_0.1]*dataframe2.loc[%age_paid_0.1,0]+dataframe1.loc['AC005839',%age_paid_0.2]*dataframe2.loc[%age_paid_0.2,0]+...+dataframe1.loc['AC005839',%age_paid_0.5]*dataframe2.loc[%age_paid_0.5,0]
dataframe3.loc['AC005839',1] = dataframe1.loc['AC005839',%age_paid_0.1]*dataframe2.loc[%age_paid_0.1,1]+dataframe1.loc['AC005839',%age_paid_0.2]*dataframe2.loc[%age_paid_0.2,1]+...+dataframe1.loc['AC005839',%age_paid_0.5]*dataframe2.loc[%age_paid_0.5,1]
我们将不胜感激任何形式的帮助。基本上我试图将变量转换为与主要组件相同的平面。提前致谢!
这是点积。由于您的 index/column 标签匹配,您只需要:
df1.dot(df2)