[英]Pandas, how to make 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
對於這個,我也進行分組。 y = df2.groupby(“ Name2”)。size()
然后,我想制作其列為x且行為y的矩陣,並希望將值相乘。 我想要這樣的矩陣。
Jon Maria Mike
A 3 6 9
B 1 2 3
如果您能告訴我該怎么做,我將不勝感激。
您可以執行點積:
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
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
或者我們可以使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.