【问题标题】:Combine two single-index dataframe in rows to one with multi-level index将行中的两个单索引数据框合并为一个具有多级索引的数据框
【发布时间】:2018-03-01 21:53:53
【问题描述】:

我有两个带有单个索引的数据框。我想将它们组合成一个但具有两级索引。

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

我的繁琐方法是创建一个数据框,其中行在 Bus 中的 Days 和 Columns 中,值为 60。然后使用 pd.melt 并给出索引名称。有人有更好的想法吗?

【问题讨论】:

  • table = {'days': ['Mon', 'Mon','Tue','Tue'], 'bus': ['A','B','A', 'B'], 'journey':[60,60,60,60]} 这不是你真正想要的吗?

标签: python pandas


【解决方案1】:

这是一种方法:

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

【讨论】:

    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2018-03-15
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2012-11-25
      • 2014-08-09
      • 2018-02-17
      相关资源
      最近更新 更多