[英]Join Series on MultiIndex in pandas
我有多個具有MultiIndex的Series,我想將它們組合成一個DataFrame,它將它們連接到公共索引名稱(和廣播值)上。 設置就像
import pandas as pd
a=pd.Series([12,13,14,15], index=pd.MultiIndex.from_tuples([(1,1),(1,2),(2,1),(2,2)], names=["i", "j"]))
b=pd.Series([21,22], index=pd.MultiIndex.from_tuples([(1,),(2,)], names=["i"]))
我怎樣才能得到結果
i j a b
1 1 12 21
1 2 13 21
2 1 14 22
2 2 15 22
你能建議如何得到這個結果嗎? 理想情況下,這也適用於兩個以上的系列。
這在此處記錄 :
pd.merge(a.reset_index(), b.reset_index(), on='i')
如果需要,可以使用set_index
設置索引。 或者:
pd.DataFrame(b).join(pd.DataFrame(a), rsuffix='a')
由於pandas為0.24.0,因此可以使用重疊索引級別將多索引數據幀相互合並。 根據發行說明 :
index_left = pd.MultiIndex.from_tuples([('K0', 'X0'), ('K0', 'X1'),
('K1', 'X2')],
names=['key', 'X'])
left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']}, index=index_left)
index_right = pd.MultiIndex.from_tuples([('K0', 'Y0'), ('K1', 'Y1'),
('K2', 'Y2'), ('K2', 'Y3')],
names=['key', 'Y'])
right = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']}, index=index_right)
left.join(right)
日期:
A B C D
key X Y
K0 X0 Y0 A0 B0 C0 D0
X1 Y0 A1 B1 C0 D0
K1 X2 Y1 A2 B2 C1 D1
[3 rows x 4 columns]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.