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']]

次元が同じではないことに注意してください。インデックスを使用してデータを整列させたいと思います。同じ形状の配列に変換すると、必要なものが得られることはわかっていますが、別の解決策を見つけたいと思います。

4

1 に答える 1

0

やや複雑な次元の問題に直面しています。

割り当てラインを少し分解してみましょう。

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

df.loc[:, ['sbc']]の形状のデータフレームです10 x 1:それに を与え、10それに['sbc']を与えました1df.loc[:, 'sbc']あなたが形をしていたら10 x 0または(10, )、これはシリーズになります。従うべき良いルールは、必要な数のディメンションを使用することです。

siPanel.loc[:, [0], [0]]形状のパネルです16 x 1 x 1(16, )前の段落のレッスンを使用すると、を使用して次元を に縮小できることがわかりますsiPanel.loc[:, 0, 0]。これはシリーズでもあり、問題なく課題を進めることができます。

これを試して:

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
于 2016-07-19T15:37:22.493 に答える