2016-07-19 7 views
2

나는 패널 슬라이스를 업데이트해야합니다. 오류가 다시 발생하지 않더라도 작동하지 않습니다. 뭐가 잘못 됐어?업데이트 패널 조각

df = pd.DataFrame(np.random.rand(10, 4), 
          columns=['sd', 'ed', 'sbc', 'ssd'], 
          index=np.arange(2000, 2010)) 

siPanel = pd.Panel(np.nan, items=np.arange(1998, 2014), major_axis=range(0, 10), minor_axis=range(0, 5)) 

spiPanel.loc[:, [0], [0]] = df.loc[:, ['sbc']] 

크기가 동일하지 않으므로 색인을 사용하여 데이터를 정렬하고 싶습니다. 같은 모양의 배열로 변환한다는 사실을 알고 싶지만 다른 해결책을 찾고 싶습니다.

도움 주셔서 감사합니다.

L.

답변

0

당신은 어떤 반 복잡한 차원의 문제로 받고 있습니다.

는 이제 과제 라인 조금 분해 보자.

siPanel.loc[:, [0], [0]] = df.loc[:, ['sbc']] 

df.loc[:, ['sbc']]10 x 1의 형상의 dataframe이다. :는 그것에게 10을주고 ['sbc']는 그것에게 1했다. 당신이 df.loc[:, 'sbc']했던 모양 10 x 0 또는 (10,), 이것은 일련 될 것입니다. 따라야 할 좋은 규칙은 필요한만큼의 치수를 사용하는 것이라고 말하고 싶습니다.

siPanel.loc[:, [0], [0]]16 x 1 x 1 모양의 패널이다. 이전 단락의 교훈을 사용하여, 당신은 우리가 siPanel.loc[:, 0, 0]을 사용하여 (16,)에 크기를 줄일 수 있습니다 알고 있습니다. 이것은 이제 시리즈이기도하며 과제는 문제없이 진행될 수 있습니다.

이 시도 :

siPanel.loc[:, 0, 0] = df.loc[:, 'sbc'] 

siPanel.loc[:, 0, 0] 

1998   NaN 
1999   NaN 
2000 0.677186 
2001 0.030134 
2002 0.003945 
2003 0.894504 
2004 0.913937 
2005 0.553544 
2006 0.199962 
2007 0.384449 
2008 0.491008 
2009 0.408632 
2010   NaN 
2011   NaN 
2012   NaN 
2013   NaN 
Name: 0, dtype: float64 
+0

너무 감사합니다! 나는 문제에 가까웠지만 실수는 보지 못했다! – Cursore