如何将数据帧元素相乘并创建多索引--Python

如何将数据帧元素相乘并创建多索引--Python,python,pandas,dataframe,matrix-multiplication,multi-index,Python,Pandas,Dataframe,Matrix Multiplication,Multi Index,我有两个数据帧日期和供应: data = Nov_15 DEc_15 Jan_16 0 2 4 6 1 3 5 7 supply = c1 c2 0 1 2 1 3 4 2 5 6 我想将supply的c1列乘以date元素的行0,将c2列乘以行1。结果应如下所示: Nov_15 Nov_15 Dec_15 Dec_15

我有两个数据帧
日期
供应

data =
    Nov_15   DEc_15   Jan_16
0    2        4        6
1    3        5        7

supply =
    c1    c2 
0   1     2     
1   3     4  
2   5     6 
我想将
supply
c1
列乘以
date
元素的行
0
,将
c2
列乘以行
1
。结果应如下所示:

    Nov_15    Nov_15   Dec_15   Dec_15   Jan_16   Jan_16
    c1        c2       c1       c2       c1       c2
0   2         6        4        10       6        14
1   6         12       12       20       18       28
2   10        18       20       30       30       42

我可以为此编写一个函数吗?

您可以重新索引两个数据帧,使其索引/列匹配,然后将它们相乘:

df1 = pandas.DataFrame([[i*j for i in range(1, 3)] for j in range(2, 5)], index=list('abc'), columns=list('AB'))
print df1
df2 = pandas.DataFrame([[i*10**j for i in range(1, 4)] for j in range(1, 3)], columns=list('abc'))
print df2

df11 = df1.reindex(columns=pandas.MultiIndex.from_product([df1.columns, df2.index]), level=0)
print df11
df22 = df2.T.reindex(columns=pandas.MultiIndex.from_product([df1.columns, df2.index]), level=1)
print df22

df3 = df11.mul(df22)
print df3

您可以对两个数据帧重新编制索引,使其索引/列匹配,然后将它们相乘:

df1 = pandas.DataFrame([[i*j for i in range(1, 3)] for j in range(2, 5)], index=list('abc'), columns=list('AB'))
print df1
df2 = pandas.DataFrame([[i*10**j for i in range(1, 4)] for j in range(1, 3)], columns=list('abc'))
print df2

df11 = df1.reindex(columns=pandas.MultiIndex.from_product([df1.columns, df2.index]), level=0)
print df11
df22 = df2.T.reindex(columns=pandas.MultiIndex.from_product([df1.columns, df2.index]), level=1)
print df22

df3 = df11.mul(df22)
print df3