如何将数据帧元素相乘并创建多索引--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