首页 > 解决方案 > 将数据框与分层索引合并?

问题描述

问题

代码示例

import pandas as pd
import numpy as np
import datetime

BTC_df = pd.DataFrame(np.array([[datetime.time(19,15,0),1.05,'BTC'],[datetime.time(9,20,0),1.2,'BTC']]),
                      columns = ['time','return','coin'],
                      index = [[datetime.date(2020,5,1), datetime.date(2020,5,2)]])

ETH_df = pd.DataFrame(np.array([[datetime.time(8,30,0),1.1,'ETH'],[datetime.time(17,30,0),0.9,'ETH']]),
                      columns = ['time','return','coin'],
                      index = [[datetime.date(2020,5,1), datetime.date(2020,5,2)]])

BTC_df 
>>>               time    return   coin
   2020-05-01   19:15:00    1.05    BTC
   2020-05-02   09:20:00    1.2     BTC

ETH_df 
>>>                time    return   coin
   2020-05-01   08:30:00    1.1     ETH
   2020-05-02   17:30:00    0.9     ETH

我想要的输出如下,使用分层索引(MultiIndex)

merged_df
>>>               time    return   coin
   2020-05-01   08:30:00    1.1     ETH
                19:15:00    1.05    BTC
   2020-05-02   09:20:00    1.2     BTC
                17:30:00    0.9     ETH

标签: pythonpandasdataframemergeconcatenation

解决方案


您可以使用pd.concat它们并对其进行排序df.sort_values

df = pd.concat([BTC_df,ETH_df])
df.rename_axis('Date').sort_values(by=['Date','time'])

                time return coin
Date
2020-05-01  08:30:00    1.1  ETH
2020-05-01  19:15:00   1.05  BTC
2020-05-02  09:20:00    1.2  BTC
2020-05-02  17:30:00    0.9  ETH

推荐阅读