[英]pandas multiindex dataframe conditional columns concatanation
我有2個多索引數據框
df2 = pd.DataFrame({'Country': [ 'US', 'IT', 'FR'],
'Unit': [ 'USD', 'EUR', 'EUR'],
'Location': [ 'Hawai', 'Torino', 'Paris'],
'2000': [666, 888,777],
'2002': [44,55,66]
})
df2.set_index(['Country','Unit','Location'],inplace=True)
df3 = pd.DataFrame({'Country': [ 'US', 'IT', 'FR'],
'Unit': [ 'USD', 'EUR', 'EUR'],
'2018': [666, 888,777]
})
df3.set_index(['Country','Unit'],inplace=True)
2000 2002
Country Unit Location
US USD Hawai 666 44
IT EUR Torino 888 55
FR EUR Paris 777 66
2018
Country Unit
US USD 666
IT EUR 888
FR EUR 777
我想有一個thid列的數據框結果,其值僅是EUR,另一個應該保持空白,如下所示
2000 2002 2018
Country Unit Location
US USD Hawai 666 44
IT EUR Torino 888 55 888
FR EUR Paris 777 66 777
嘗試級聯,但不確定是否正確的方法嗎? 有任何想法嗎 ?
使用join
與DataFrame.xs
的選擇由第二級MultiIndex
:
df = df2.join(df3.xs('EUR', level=1, drop_level=False))
print (df)
2000 2002 2018
Country Unit Location
US USD Hawai 666 44 NaN
IT EUR Torino 888 55 888.0
FR EUR Paris 777 66 777.0
詳情:
print (df3.xs('EUR', level=1, drop_level=False))
2018
Country Unit
IT EUR 888
FR EUR 777
在pandas 0.22.0
工作的解決方案-通過reset_index
, join
和last set_index
具有append=True
, append=True
DataFrame
的級別轉換為兩個DataFrame
相同數量級別的列,以避免丟棄原始索引值:
df = (df2.reset_index(level=2)
.join(df3.xs('EUR', level=1, drop_level=False))
.set_index('Location', append=True))
print (df)
2000 2002 2018
Country Unit Location
US USD Hawai 666 44 NaN
IT EUR Torino 888 55 888.0
FR EUR Paris 777 66 777.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.