4
我想乘兩個Series
,都與MultiIndex
:乘兩個系列具有多指標在熊貓
import pandas as pd
tuples = [(0, 100, 1000),(0, 100, 1001),(0, 100, 1002), (1, 101, 1001)]
index_3levels=pd.MultiIndex.from_tuples(tuples,names=["l1","l2","l3"])
tuples = [(0, 100), (1, 101)]
index_2levels=pd.MultiIndex.from_tuples(tuples,names=["l1","l2"])
data_3levels = pd.Series(1, index=index_3levels)
data_2levels = pd.Series([2,3], index=index_2levels)
print data_3levels
l1 l2 l3
0 100 1000 1
1001 1
1002 1
1 101 1001 1
dtype: int64
print data_2levels
l1 l2
0 100 2
1 101 3
dtype: int64
的問題是,我不能從2到3的水平重新索引Series
:
data_2levels.reindex(data_3levels.index, level=["l1","l2"])
Exception: Join on level between two MultiIndex objects is ambiguous
我發現此解決方法:
for l1 in [0,1]:
data_3levels[l1] *= data_2levels[l1].reindex(data_3levels[l1].index, level="l2")
print data_3levels
l1 l2 l3
0 100 1000 2
1001 2
1002 2
1 101 1001 3
dtype: int64
但我認爲有肩膀d只需要1步即可完成此操作。
謝謝,我測試了我的實際數據集(幾百萬次採樣),復位指數是快,但乘法是很慢的,我猜是因爲匹配指數是慢。有沒有更高效的選擇? –
肯定只是乘數組本身並設置索引之後;但您必須確保數據大小相同。你在這裏的目標是什麼? – Jeff
數組大小不一樣,就像本例中一樣。第一個數組有3個級別,第二個數組只有前2個,我想將它們乘以匹配的索引。 –