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']给了它1。如果你完成df.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 回答