这是我的问题的示意图。 之后我跑“groupby”或“pivot_table”我dataframe如下,我得到了一个dataframe②与“A”、“B”指数。然而,我不需要更多的数据。因此,我希望在特定的索引级别聚合数据。 然后我可以得到最后一个dataframe③。b应该汇总e\f索引数据,1+1 = 2 这个函数与Excel中的折叠行为类似。我检查了文档(pivot_table),但是“margin”这个参数不适合这个要求。 谢谢! !
问题来源StackOverflow 地址:/questions/59383668/how-to-sum-the-data-in-specific-level-after-groupby-or-pivot-table-with-multi-in
我不知道这样一个函数,但这里有一个变通方法:
df
C
A B
a p 1
q 1
d r 2
s 2
b t 3
v 3
w 3
c x 4
y 4
fld=["d","b","c"]
nfidx=df.index.levels[0].difference(fld)
Index(['a'], dtype='object', name='A')
df2= df.loc[fld].groupby("A").sum()
C
A
b 9
c 8
d 4
mi= pd.MultiIndex.from_product([df2.index,[np.nan]],names=["A","B"])
MultiIndex([('b', nan),
('c', nan),
('d', nan)],
names=['A', 'B'])
df2.index=mi
C
A B
b NaN 9
c NaN 8
d NaN 4
pd.concat([ df.loc[nfidx],df2])
C
A B
a p 1
q 1
b NaN 9
c NaN 8
d NaN 4
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。