这可能是非常基本的,但我似乎找不到任何解决办法。我试图在pandas中构建一个3D面板对象,然后用我从几个csv文件中读取的数据填充它。下面是我要做的一个例子:
import numpy as np
import pandas as pd
year = np.arange(2000,2005)
obs = np.arange(1,5)
variables = ['x1','x2']
data = pd.Panel(items = obs, major_axis = year, minor_axis = variables)
因此data[i]
给出了属于面板中某个观测单元的所有数据:
然后,我从一个csv中读取数据,这个csv给了我一个如下所示的数据帧(我只是在这里创建一个等效的对象,使其成为一个有效的示例):
x1data = pd.DataFrame(data = zip(year, np.random.randn(5)), columns = ['year', 'x1'])
x1data
year x1
0 2000 -0.261514
1 2001 0.474840
2 2002 0.021714
3 2003 -1.939358
4 2004 1.167545
不,我想用x1data dataframe中的数据替换x1
列中的NaN。我的第一个想法(假设我来自R)是简单地确保从x1data中选择一个与面板中x1列具有相同维度的对象并将其分配给面板:
data[1].x1 = x1data.x1
但是,这不起作用,我想这是因为在x1data中,年份是dataframe的一列,而在面板中,年份是列左侧显示的内容(“行名称”,这是索引吗)?在
正如你可能从我的问题中可以看出的那样,我还远没有真正理解熊猫数据结构中发生了什么,所以任何帮助都将不胜感激!在
我猜这个问题并没有引起太多的回答,因为它太蠢了,但是为了防止有人碰到这个问题,像我一样不知所措,最简单的答案是使用
.iloc
方法访问面板,如下所示:其中每个参数可以是单个元素或列表,以便在面板的切片上写入。我上面的问题可以通过
^{pr2}$或者
注意,如果我没有使用}的索引从0开始,则不会发生任何事情。在
np.asarray
,当data.iloc[]
创建了一个以年份为索引的对象,而{相关问题 更多 >
编程相关推荐