熊猫,如何制作矩阵

时间:2017-11-23 23:28:52

标签: python pandas matrix

我对熊猫有疑问,如果有人可以帮助我,我会非常感激。

我有一个数据框

df1 = pd.DataFrame( {'Name': ['A', 'B','A','A']})
df1

我想为此做groupby。

x=df1.groupby("Name").size()
x

我还有另一个数据框

df2 = pd.DataFrame( {'Name2': ['Jon',Maria','Maria','Mike','Mike','Mike']})
df2

对于这个,我也做groupby。     y = df2.groupby(“Name2”)。size()

然后我想制作矩阵,其列为x,行为y,并希望将这些值相乘。 我想要这样的矩阵。

     Jon  Maria     Mike
A    3       6         9
B    1       2         3

如果你能告诉我怎么做,我会非常感激。

3 个答案:

答案 0 :(得分:4)

您可以执行点积:

x.to_frame().dot(y.to_frame().T)

Name2  Jon  Maria  Mike
Name                   
A        3      6     9
B        1      2     3

如果要删除轴标签,请使用rename_axis

x.to_frame().dot(y.to_frame().T)\
      .rename_axis(None).rename_axis(None, 1)

   Jon  Maria  Mike
A    3      6     9
B    1      2     3

或者,就地分配:

v = x.to_frame().dot(y.to_frame().T)
v.index.name = v.columns.name = None

v

   Jon  Maria  Mike
A    3      6     9
B    1      2     3

答案 1 :(得分:3)

In [35]: (pd.DataFrame(y[:,None].dot(x[:,None].T).T, columns=y.index, index=x.index)
            .rename_axis(None)
            .rename_axis(None,1))
Out[35]:
   Jon  Maria  Mike
A    3      6     9
B    1      2     3

答案 2 :(得分:2)

或者我们可以使用np.multiply.outer

pd.DataFrame(np.multiply.outer(x.values,y.values),columns=y.index,index=x.index)
Out[344]: 
Name2  Jon  Maria  Mike
Name                   
A        3      6     9
B        1      2     3