【发布时间】:2020-05-19 12:01:51
【问题描述】:
请考虑这两个数据框。
import pandas as pd
cols = ['F', 'D']
s_ind = pd.MultiIndex.from_arrays([['A', 'A', 'A'], ['B', 'B', 'B'], ['C', 'C', 'C'], ['D', 'E', 'F']],
names=('cat1', 'cat2', 'cat3', 'cat4'))
s = pd.DataFrame(data=[[1,4], [2,5], [3,6]], columns=cols, index=s_ind)
所以 s 是:
F D
cat1 cat2 cat3 cat4
A B C D 1 4
E 2 5
F 3 6
还有……
ib_ind = pd.MultiIndex.from_arrays([['A'], ['B'], ['C']], names=['cat1', 'cat2', 'cat3'])
ib = pd.DataFrame(data=[[7, 8]], columns=cols, index=ib_ind)
所以 ib 是:
F D
cat1 cat2 cat3
A B C 7 8
无论我使用轴 0(显示)还是轴 1(未显示)相乘,我都会收到相同的结果。见这里:
print(ib.mul(s, axis=0))
F D
cat1 cat2 cat3 cat4
A B C D 7 32
E 14 40
F 21 48
问题:如何执行乘法以将其作为输出接收?
print(pd.DataFrame(data=[[8*1,8*4], [0,0], [7*3,7*6]], columns=cols, index=s_ind))
F D
cat1 cat2 cat3 cat4
A B C D 8 32
E 0 0
F 21 42
注意,E 行是 0,因为 ib 中没有对应的 E 列可以相乘。或者,nans 也可以。
【问题讨论】:
标签: python pandas dataframe multi-index