2017-02-15 11 views
1

2つのパンダデータフレームdfadfbが与えられた場合、各データフレームのマルチインデックスには、不足しているデータフレームインデックスを記入

In [149]: dfa - dfb 
Out[149]: 
     c 
a b  
0 5 0.0 
1 6 NaN 
2 7 0.0 
3 8 0.5 
4 9 0.0 

...しかしdfadfbからインデックスを欠いていてもよい:ここ

In [147]: dfa 
Out[147]: 
     c 
a b  
0 5 10.0 
1 6 11.0 
2 7 12.0 
3 8 13.5 
4 9 14.0 

In [148]: dfb 
Out[148]: 
     c 
a b  
0 5 10 
2 7 12 
3 8 13 
4 9 14 

は、dfbインデックス(1,6)を欠いています。値は0で、各データフレームに欠落したインデックスを挿入する必要があります。言い換えれば

、各データフレームのインデックスが追加された行は、私はいくつかの値にNaNを交換する必要がある場合は、パラメータfill_valueDataFrame.subが必要だと思う0

答えて

1

の値を取得する2 MultiIndexesの労働組合、次のようになります。

df = dfa.sub(dfb, fill_value=0) 
print (df) 
     c 
a b  
0 5 0.0 
1 6 11.0 
2 7 0.0 
3 8 0.5 
4 9 0.0 
df = dfb.sub(dfa, fill_value=0) 
print (df) 
     c 
a b  
0 5 10 
1 6 0 
2 7 12 
3 8 13 
4 9 14 

またはインデックスのunionが必要な場合はreindexを追加:

mux = dfa.index.union(dfb.index) 
print (mux) 
MultiIndex(levels=[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]], 
      labels=[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4]], 
      names=['a', 'b'], 
      sortorder=0) 

print (dfa.reindex(mux, fill_value=0)) 
     c 
a b  
0 5 10.0 
1 6 11.0 
2 7 12.0 
3 8 13.5 
4 9 14.0 

print (dfb.reindex(mux, fill_value=0)) 
     c 
a b  
0 5 10 
1 6 0 
2 7 12 
3 8 13 
4 9 14 
関連する問題