更新面板切片

Updating Panel slice

我需要使用从数据帧中撤回的一些值来更新面板切片。即使我没有返回任何错误,它也不起作用。怎么了?

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

注意维度不一样,我想用索引来对齐数据。 我知道转换为具有相同形状的数组可以获得我想要的,但我想找到另一个解决方案。

您遇到了一些半复杂的维度问题。

让我们稍微分解一下您的分配行。

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 的面板。使用上一段中的课程,您知道我们可以使用 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