首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新Panel slice

更新Panel slice
EN

Stack Overflow用户
提问于 2016-07-19 23:23:44
回答 1查看 59关注 0票数 2

我需要用从数据帧中提取的一些值来更新一个面板切片。即使我没有得到任何错误,它也不能工作。出什么问题了?

代码语言:javascript
复制
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.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-19 23:37:22

你会遇到一些半复杂的维度问题。

让我们稍微分解一下你的任务行。

代码语言:javascript
复制
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]]是shape 16 x 1 x 1的一个面板。利用上一段中的经验,您知道我们可以通过使用siPanel.loc[:, 0, 0]将维度减少到(16, )。现在这也是一个系列,任务可以不出问题。

试试这个:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38462642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档