2014-02-13 2 views
0

다음은 회신을 통해 pandas pivot dataframe to 3d data입니다. 나중에 색인을 다시 생성해야합니다 (패널 레이블과 요소의 다른 정렬을 누락 된 레이블의 NaN으로 채우기).팬더 : 패널을 다시 색인 할 때 예기치 않은 결과가 발생했습니다.

reindex (ing)는 한 번에 패널의 모든 축에서 완료 될 때 "잘못된"결과를 초래합니다.

:의 원래의 모든 값을 가지고 있지 않은 4 항목에 (누락 된 항목의 작성 포함) 재 인덱싱의 결과를 살펴 보자 이제

In [1]: import pandas as pd 

In [2]: df_dict = {'data': {0: 3.0, 
    ...:      1: 3.0, 
    ...:      2: 6.0, 
    ...:      3: 8.0, 
    ...:      4: 9.0, 
    ...:      5: 1.0, 
    ...:      6: 4.0, 
    ...:      7: 0.0, 
    ...:      8: 2.0, 
    ...:      9: 3.0}, 
    ...:      'x': {0: 0, 1: 1, 2: 2, 3: 2, 4: 5, 5: 5, 6: 5, 7: 7, 8: 7, 9: 7}, 
    ...:      'y': {0: 3, 1: 7, 2: 5, 3: 6, 4: 4, 5: 6, 6: 6, 7: 0, 8: 2, 9: 8}, 
    ...:      'z': {0: 6, 1: 0, 2: 3, 3: 9, 4: 1, 5: 2, 6: 6, 7: 5, 8: 9, 9: 0}} 

In [3]: df = pd.DataFrame(df_dict) 

In [4]: df.set_index(['x','y','z'], inplace=True) 

In [5]: df = df['data'].unstack() 

In [6]: data_panel = df.to_panel() 

:

나 인공 데이터를 예시하자

In [7]: data_panel.reindex(items=range(11), minor_axis=range(11), major_axis=range(11))[4] 
Out[7]: 
    0 1 2 3 4 5 6 7 8 9 10 
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
2 NaN NaN NaN NaN NaN NaN 8 NaN NaN NaN NaN 
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
7 NaN NaN 2 NaN NaN NaN NaN NaN NaN NaN NaN 
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 

[11 rows x 11 columns] 
재 인덱싱은 두 단계로 나누어 져

는 예상 된 결과가 검색됩니다 :

In [8]: data_panel.reindex(items=range(11)).reindex(minor_axis=range(11), major_axis=range(11))[4] 
Out[8]: 
    0 1 2 3 4 5 6 7 8 9 10 
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 

[11 rows x 11 columns] 

마지막 두 줄의 결과가 서로 다른 이유는 무엇입니까?

해결 (! 제프 고맙습니다)

는 :

이 0.13.1 (아니지만 0.13.0)에 팬더에서 수정 된 버그입니다.

업데이트하면 문제가 해결됩니다. 참조 제프의 의견이 울부 짖는 소리뿐만 아니라 github bug report

+1

? 그들의 3 개의 축을 모두 지정할 때 올바르게 다시 색인되지 않는 0.13으로 수정 된 버그였습니다. https://github.com/pydata/pandas/issues/5905 – Jeff

+0

@Jepd .__ version__은 '0.13.0' –

+0

을 읽습니다. 죄송합니다 ... 버그가 0.13.0에 있음을 의미합니다 .... 0.13.1 (now) – Jeff

답변

0

이 같은

는 0.13.1 (아니지만 0.13.0)에 팬더에서 수정 된 버그입니다.

업데이트하면 문제가 해결됩니다.

참조 제프의 질문에 대한 의견뿐만 아니라 당신이 혹시 0.12를 사용하는 github bug report

관련 문제