我对熊猫有疑问,如果有人可以帮助我,我会非常感激。
我有一个数据框
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
如果你能告诉我怎么做,我会非常感激。
答案 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