2017-02-15 3 views
1

두 개의 팬더 데이터 프레임 dfadfb이 주어지면 각 DataFrame의 MultiIndex에 다른 모든 행이 포함되도록하려면 어떻게해야합니까?누락 된 DataFrame 인덱스를 채우십시오

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이어야합니다. 즉

각 DataFrame의 인덱스는 추가 된 행은 내가 어떤 값으로 NaN을 교체해야 할 경우 매개 변수 fill_valueDataFrame.sub 필요하다고 생각 0

답변

1

의 값을 가져옵니다 두 MultiIndexes의 조합이어야한다 :

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

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 
:

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 
관련 문제