Python 我的数据帧有多个索引,如何计算一个级别的总和?

Python 我的数据帧有多个索引,如何计算一个级别的总和?,python,dataframe,Python,Dataframe,大家好,我想根据年份计算暴力类型的总和。例如,计算2013年暴力类型的总计数,即18728+121662+1035。但是我不知道当有多个索引时如何选择数据。如有任何建议,将不胜感激。谢谢。中的级别参数就是您要查找的 级别int、级别名称或其顺序,默认为无 如果轴是多索引(分层),则按特定级别分组 要回答您的问题,您只需要: df.groupby(level=[0,1]).sum() #或 df.groupby(级别=['地区','年]).sum() 见效 将熊猫作为pd导入 iterables


大家好,我想根据
年份计算
暴力类型的总和。例如,计算
2013年
暴力类型的总计数,即
18728+121662+1035
。但是我不知道当有多个索引时如何选择数据。如有任何建议,将不胜感激。谢谢。

中的
级别
参数就是您要查找的

级别int、级别名称或其顺序,默认为无

如果轴是多索引(分层),则按特定级别分组

要回答您的问题,您只需要:

df.groupby(level=[0,1]).sum()
#或
df.groupby(级别=['地区','年]).sum()
见效

将熊猫作为pd导入
iterables=[[001]、[2013、2014]、[Hazardous]、[Non-Violent]、[Violent']
index=pd.MultiIndex.from_产品(iterables,name=[‘地区’、‘年份’、‘暴力类型’]))
df=pd.DataFrame(列表(范围(0,len(index))),index=index,columns=['count']))
'''
打印(df)
计数
地区年暴力类型
001 2013危险0
非暴力1
暴力2
2014年危险3
非暴力4
暴力的5
SST 2013危险6
非暴力7
暴力的8
2014年危险9
非暴力10
暴力的11
'''
打印(df.groupby(level=[0,1]).sum())
'''
计数
地区年
001      2013      3
2014     12
SST 2013 21
2014     30
'''
打印(df.groupby(级别=['地区','年份]).sum())
'''
计数
地区年
001      2013      3
2014     12
SST 2013 21
2014     30
'''

谢谢您的帮助,先生。我还有一个问题,如何根据地区和年份计算每种暴力类型的百分比?我试图df['count']/df.groupby(level=['district','year']).sum(),但得到一个错误,说它们有不同的索引。@MaverickSauce
df.groupby(level=[0,1])。apply(lambda x:x/x['count'].sum())