从列中具有多个值的组成数据帧获取组成数据帧

时间:2017-12-18 11:31:18

标签: python-2.7 pandas

我有一个样本数据框,下面有两个值(总线和车+小巴)mode column我有两个问题,第一个是如何将其分解为两个数据帧,单个值为如下所示。第二个问题是因为我有一个数据框列表,其中一些以input格式出现,我怎么能写出条件语句呢。

输入

                            Dest           a      b      c
Orig    Variable    Time    Mode            
  1        x          y     Bus           5.00  17.32   12.61
                            Car+Minibus   0.87  15.34   12.01
  2        x          y     Bus           5.00  14.72   10.15
                            Car+Minibus   10.47 3.03    11.05
  3        x          y     Bus           14.72 5.00    15.98
                            Car+Minibus   11.64 11.25   2.08
  4        x          y     Bus           15.15 14.62   5.94
                            Car+Minibus   12.02 9.25    5.80

输出:

                            Dest           a      b      c
Orig    Variable    Time    Mode            
  1        x          y     Bus           5.00  17.32   12.61
  2        x          y     Bus           5.00  14.72   10.15
  3        x          y     Bus           14.72 5.00    15.98
  4        x          y     Bus           15.15 14.62   5.94


                            Dest           a      b      c
Orig    Variable    Time    Mode            
  1        x          y     Car+Minibus   0.87  15.34   12.01
  2        x          y     Car+Minibus   10.47 3.03    11.05
  3        x          y     Car+Minibus   11.64 11.25   2.08
  4        x          y     Car+Minibus   12.02 9.25    5.80

1 个答案:

答案 0 :(得分:1)

我认为您需要检查MultiIndex的第四级并按boolean indexing过滤:

mask = df.index.get_level_values(3) == 'Bus'

df1 = df[mask]

df2 = df[~mask]

但是如果想要使用DataFrame s的列表:

dfs = [df11,df12,df13]

for df in dfs:
    mask = df.index.get_level_values(3) == 'Bus'
    df1 = df[mask]
    print (df1)
    df2 = df[~mask]
    print (df2)