簡體   English   中英

熊貓,如何制作矩陣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM