将行中的两个单索引数据帧合并为一个具有多级索引的数据帧

2024-06-28 11:04:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧和一个索引。我想把它们合并成一个,但有两级索引

import pandas as pd  
import numpy as np  
busjouney={'bus':['A','B'],'journey':[60,60]}  
daytable={'days':['Mon','Tue'],'journey':[60,60]}  
pd_busjouney=pd.DataFrame(busjouney)  
pd_daytable=pd.DataFrame(daytable)  

我想将这两个数据帧组合成一个具有两级索引的数据帧,如下所示:

days bus journey  
Mon  A   60  
     B   60  
Tue  A   60
     B   60

我的麻烦方法是创建一个数据帧,其中的行以天为单位,列以总线为单位,值为60。然后使用pd.melt并给出索引名。谁有更好的主意


Tags: 数据importnumpydataframepandasas单位days
2条回答
In [1]: pd_daytable.groupby('days').apply(lambda x: x.merge(pd_busjouney))\
                   .set_index(['days', 'bus'])

Out[1]: 
          journey
days bus         
Mon  A         60
     B         60
Tue  A         60
     B         60

这里有一个方法:

df = pd_daytable.merge(pd_busjouney, how='left', on='journey')\
                .set_index(['days', 'bus'])

#           journey
# days bus         
# Mon  A         60
#      B         60
# Tue  A         60
#      B         60

相关问题 更多 >