我正在使用具有混合索引标签的多索引数据框,即第一级包含字符串标签,第二和第三级为整数标签,第四级标签为日期。 数据框看起来像下面(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,但是当涉及到存储它时,我尝试过的所有选项似乎都不起作用。我想这个问题与'Integer'标签有关(在第2和第3层 - 启动 - 停止)。我曾尝试以下选项/方法没有任何成功
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))]
我获得以下错误 -
类型错误:unhashable类型: 'numpy.ndarray'
这里主要目的是为了操作上只有很小的块master_df并将这些结果存回master_df的原始位置。我尝试过使用更新方法,但是为了实现这个目的,还有其他的选择。
你可以检查是否'sub_df'具有指数相同'master_df'?因为[doc](http://pandas.pydata.org/pandas-docs/stable/merging.html#merging-together-values-within-series-or-dataframe-columns)提到类似“两个类似索引的(或类似索引)“更新”方法的“DataFrames或Series”。 – herrfz 2013-03-04 12:17:32