我正在使用具有混合索引标签的多索引数据框,即第一级包含字符串标签,第二和第三级是整数标签,第四级标签是日期。数据框如下所示(master_df)
X1 X2 X3
bucket Start Stop Date
B1 1 1 1/3/2000 2 2 3
1/4/2000 4 3 3
B1 1 2 1/3/2000 4 2 3
1/4/2000 6 2 2
我想取出 sub_df 作为 master_df.ix['B1',1,2,:],对 sub_df 做一些操作并将其存储回 master_df 的同一位置。我可以使用各种方法取出 sub_df,但是在将其存储回来时,我尝试过的所有选项似乎都不起作用。我想这个问题与拥有“整数”标签有关(在第二和第三拉维尔 - 开始-停止)。我尝试了以下选项/方法但没有任何成功
sub_df = master_df.ix['B1'].ix[1].ix[2]
#do some operations on sub_df
master_df.xs('B1').xs(1).xs(2).update(sub_df)
master_df.ix['B1'].ix[1].ix[2].update(sub_df)
merge(master_df.ix['B1',1,2,:],sub_df)
以上操作均未反映 master_df 的更改(我也没有收到任何错误消息。)
你能建议正确的方法吗?
更新 :
sub_df 和 master_df 没有与 sub_df 上的操作相同的索引,仅期望日期索引。sub_df 如下所示。
X1 X2 X3
Date
1/3/2000 2 2 3
1/4/2000 4 3 3
如果我尝试
sub_df = master_df[master_df.index.get_loc(('B1', 1, 2))]
我收到以下错误 -
TypeError:不可散列的类型:'numpy.ndarray'
这里的主要目的是仅对 master_df 的一小块进行操作,并将这些结果存储回 master_df 中的原始位置。我尝试使用更新方法,但是实现此目的的任何其他替代方法都可以。