在Python中连接MultiIndex Dataframes

时间:2018-05-08 17:09:40

标签: python-3.x pandas dataframe

我有2个Multindex数据帧(日期自动收报机是索引)

df_usdtbtc

                         close
date          ticker                                                     
2017-12-31    USDT_BTC   13769
2018-01-01    USDT_BTC   13351

df_ethbtc

                         close
date          ticker                                                     
2017-12-31    USDT_ETH   736
2018-01-01    USDT_ETH   754

有没有办法合并,连接或加入这两个数据帧,以便得到这个数据帧:

                         close
date          ticker                                                     
2017-12-31    USDT_BTC   13769
              USDT_ETH   736
2018-01-01    USDT_BTC   13351
              USDT_ETH   754

帮助设置数据框:

df_usdtbtc = {'dates':  [dtm(2018, 1, 1),dtm(2018, 1, 2)], 'ticker': ['USDT_BTC', 'USDT_BTC'],'close':[13769,13351]}
df_usdteth = {'dates':  [dtm(2018, 1, 1),dtm(2018, 1, 2)], 'ticker': ['USDT_ETH', 'USDT_ETH'],'close':[736,754]}
df_usdtbtc = pd.DataFrame(data=df_usdtbtc)
df_usdtbtc=df_usdtbtc.set_index(['dates','ticker'])
df_usdteth = pd.DataFrame(data=df_usdteth)
df_usdteth=df_usdteth.set_index(['dates','ticker'])

1 个答案:

答案 0 :(得分:1)

concat使用DataFrame.appendsort_index

df = pd.concat([df_usdtbtc, df_ethbtc]).sort_index()

或者:

df = df_usdtbtc.append(df_ethbtc).sort_index()
df = pd.concat([df_usdtbtc, df_ethbtc]).sort_index()
print (df)
                     close
date       ticker         
2017-12-31 USDT_BTC  13769
           USDT_ETH    736
2018-01-01 USDT_BTC  13351
           USDT_ETH    754