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')]