Python 将多列与多索引列中的同一单列相乘

Python 将多列与多索引列中的同一单列相乘,python,pandas,multi-index,Python,Pandas,Multi Index,我有这个数据框 col = pd.MultiIndex.from_arrays([['Jan', 'Jan', 'Jan', 'Cost'], ['WK1', 'WK2', 'WK3', 'Cost']]) data = pd.DataFrame(np.random.randn(4, 4), columns=col) data 我想用成本乘以一月的所有列,所以我试着这样做 data[['Jan']] * data[['Cost']

我有这个数据框

col = pd.MultiIndex.from_arrays([['Jan', 'Jan', 'Jan', 'Cost'],
                                ['WK1', 'WK2', 'WK3', 'Cost']])
data = pd.DataFrame(np.random.randn(4, 4), columns=col)
data
我想用成本乘以一月的所有列,所以我试着这样做

data[['Jan']] * data[['Cost']]

但它让我的价值观充满了Nan。有什么方法可以做到这一点吗?

我认为您需要删除
[]
来选择
数据帧

或:

也可以使用以下功能:


根据我的猜测,您在使用多级索引访问列时遇到了问题。这就是你想做的吗

data[('one','a')] * data[('two','b')]
Out[1065]: 
0    0.528834
1   -0.287322
2   -0.255244
3    0.871213
dtype: float64

嗨,伙计们,我骑自行车回答了我的问题

for col in data['Jan']:
 data[('Jan', col)] = data[('Jan',col)] * data[('Cost','Cost')]
希望有人能给我一个我可以改进的反馈

print (data.xs('one', axis=1, level=0) * data.xs('two', axis=1, level=0))
data[('one','a')] * data[('two','b')]
Out[1065]: 
0    0.528834
1   -0.287322
2   -0.255244
3    0.871213
dtype: float64
for col in data['Jan']:
 data[('Jan', col)] = data[('Jan',col)] * data[('Cost','Cost')]