我正在解决一个问题,我试图一片一片地构建一个多阵列,但结果我不断得到NAN。下面是一个简单的工作示例:
midx = pd.MultiIndex(levels=[['zero', 'one'], ['x', 'y']], codes=[[1, 1, 0, 0], [1, 0, 1, 0]])
df = pd.DataFrame(0, index=midx, columns=['A','B']) #empty array
df1 = pd.DataFrame(np.random.randn(2, 2)) #the array I want my slice to equal
df.loc['one'] # good so far
df.loc['one']=df1 # ok .....
df.loc['one'] # all NaNs
####### Output ########
>>> df
A B
one y 0 0
x 0 0
zero y 0 0
x 0 0
>>> df.loc['one']
A B
y 0 0
x 0 0
>>> df.loc['one']=df1
>>> df.loc['one']
A B
y NaN NaN
x NaN NaN
为什么会这样,我该如何修复它
将
df1
赋值给df.loc['one']
时,熊猫会尝试对齐索引值。。。他们没有。改为使用df1
的values
属性嗯。。。即使他们排好了队,也似乎不起作用。我的建议确实适用于你的例子,但仍有问题
假设
df1
定义为:这将提供更多的保证,价值观是正确排列,但它有点恶心我了
另一个将必要级别添加到
df1
的hack相关问题 更多 >
编程相关推荐